pb字符转换成utf-8

时间:2021-03-24 08:43:03
求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。

9 个解决方案

#1


引用 楼主 lr_ping 的回复:
求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉

#2


版主的机巧变通之道,佩服! pb字符转换成utf-8

#3


引用 1 楼 lzp_lrp 的回复:
Quote: 引用 楼主 lr_ping 的回复:

求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉


谢谢提示,我了是想破了脑袋这样做了,但我现在是在做接口,把UTF-8数据通过url传到别人服务器中,去掉所加的字符(空格还不行,我加的是|),但人家不愿意,现在有好几个软件公司都在做,他们的都可以,就我有这个问题,真头痛,还有什么办法吗?或者给我提供一个转换成UTF8的函数等

#4


引用 3 楼 lr_ping 的回复:
Quote: 引用 1 楼 lzp_lrp 的回复:

Quote: 引用 楼主 lr_ping 的回复:

求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉


谢谢提示,我了是想破了脑袋这样做了,但我现在是在做接口,把UTF-8数据通过url传到别人服务器中,去掉所加的字符(空格还不行,我加的是|),但人家不愿意,现在有好几个软件公司都在做,他们的都可以,就我有这个问题,真头痛,还有什么办法吗?或者给我提供一个转换成UTF8的函数等


可以用adosteam来实现

用adosteam
  integer  li_rtn  
  OLEObject  ole_ADOStream  
  ole_ADOStream  =  CREATE  OLEObject  
  li_rtn  =  ole_ADOStream.ConnectToNewObject("ADODB.Stream")  
  ole_ADOStream.Type  =  1  //二进制数据Binary  
  ole_ADOStream.Mode  =3  //具有读/写权限  
  ole_ADOStream.Open()  
  ole_ADOStream.LoadFromFile("c:\1.txt")  
  ole_ADOStream.Position  =  0  //Position为0才能设置Charset  
  ole_ADOStream.Type  =  2  //文本数据  
  ole_ADOStream.Charset  =  "UTF-8"  
  ole_ADOStream.SaveToFile("c:\2.txt",2)  
  ole_ADOStream.Close()  
  destroy  ole_ADOStream 

#5


谢谢,我试试,没用过ole,这次学习一下。另外用字符转换方法也做了,但一提交到服务器就乱码,但把那一串转换好的字符轮到地址栏直接做就是好的。我是用getulr提交的,现在想着用plstulr试试,但写格式可能不对,反回值不对,你帮我看看,我的代码哪里不对。
blob lblb_args
long ll_length
string ls_headers

lblb_args   =   blob( "serviceName=cquery&objectApiName=Sgdbase&expressions=slistnum='"+ list_id +"'"+" and purchase_date='"+ ls_bank_sg_date +"'"+" and qymc='"+ls_utf8_unit+"'&binding="+ls_binding)
messagebox('',string(lblb_args))
ll_length   =   Len(lblb_args) 
ls_headers   =   "Content-Length:" + String(ll_length)  
li_ret =ln_inet.posturl("http://app3.cloudcc.com/distributor.action?",lblb_args,ls_headers,ln_iquery)

#6


学习了!!!!

#7


不好意思,请问adosteam是什么?我的ole没有啊

#8


我找到adostem了,你给我的代码里取的是txt文件里的字符,转换后又写到txt件里,我刚试了一下,转换后没有写到文件里,只是那个文件字符编码格式确实是utf8格式的了

#9


ole_ADOStream.WriteText('中国') //写入字符串

#1


引用 楼主 lr_ping 的回复:
求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉

#2


版主的机巧变通之道,佩服! pb字符转换成utf-8

#3


引用 1 楼 lzp_lrp 的回复:
Quote: 引用 楼主 lr_ping 的回复:

求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉


谢谢提示,我了是想破了脑袋这样做了,但我现在是在做接口,把UTF-8数据通过url传到别人服务器中,去掉所加的字符(空格还不行,我加的是|),但人家不愿意,现在有好几个软件公司都在做,他们的都可以,就我有这个问题,真头痛,还有什么办法吗?或者给我提供一个转换成UTF8的函数等

#4


引用 3 楼 lr_ping 的回复:
Quote: 引用 1 楼 lzp_lrp 的回复:

Quote: 引用 楼主 lr_ping 的回复:

求把字符转换成UTF-8的代码。我现在用API做了,对于汉字个数是偶数没问题,但当汉字个数是奇数最后一个字就是乱码。


是奇数时最后加个汉字的空格,补齐,转换后再去掉


谢谢提示,我了是想破了脑袋这样做了,但我现在是在做接口,把UTF-8数据通过url传到别人服务器中,去掉所加的字符(空格还不行,我加的是|),但人家不愿意,现在有好几个软件公司都在做,他们的都可以,就我有这个问题,真头痛,还有什么办法吗?或者给我提供一个转换成UTF8的函数等


可以用adosteam来实现

用adosteam
  integer  li_rtn  
  OLEObject  ole_ADOStream  
  ole_ADOStream  =  CREATE  OLEObject  
  li_rtn  =  ole_ADOStream.ConnectToNewObject("ADODB.Stream")  
  ole_ADOStream.Type  =  1  //二进制数据Binary  
  ole_ADOStream.Mode  =3  //具有读/写权限  
  ole_ADOStream.Open()  
  ole_ADOStream.LoadFromFile("c:\1.txt")  
  ole_ADOStream.Position  =  0  //Position为0才能设置Charset  
  ole_ADOStream.Type  =  2  //文本数据  
  ole_ADOStream.Charset  =  "UTF-8"  
  ole_ADOStream.SaveToFile("c:\2.txt",2)  
  ole_ADOStream.Close()  
  destroy  ole_ADOStream 

#5


谢谢,我试试,没用过ole,这次学习一下。另外用字符转换方法也做了,但一提交到服务器就乱码,但把那一串转换好的字符轮到地址栏直接做就是好的。我是用getulr提交的,现在想着用plstulr试试,但写格式可能不对,反回值不对,你帮我看看,我的代码哪里不对。
blob lblb_args
long ll_length
string ls_headers

lblb_args   =   blob( "serviceName=cquery&objectApiName=Sgdbase&expressions=slistnum='"+ list_id +"'"+" and purchase_date='"+ ls_bank_sg_date +"'"+" and qymc='"+ls_utf8_unit+"'&binding="+ls_binding)
messagebox('',string(lblb_args))
ll_length   =   Len(lblb_args) 
ls_headers   =   "Content-Length:" + String(ll_length)  
li_ret =ln_inet.posturl("http://app3.cloudcc.com/distributor.action?",lblb_args,ls_headers,ln_iquery)

#6


学习了!!!!

#7


不好意思,请问adosteam是什么?我的ole没有啊

#8


我找到adostem了,你给我的代码里取的是txt文件里的字符,转换后又写到txt件里,我刚试了一下,转换后没有写到文件里,只是那个文件字符编码格式确实是utf8格式的了

#9


ole_ADOStream.WriteText('中国') //写入字符串