当前位置: 代码迷 >> PB >> 身份证 信息读取出来是乱码
  详细解决方案

身份证 信息读取出来是乱码

热度:608   发布时间:2016-04-29 05:26:04.0
身份证 信息读取出来是乱码,求助
身份证 信息读取出来是乱码,求助,设备是武汉精伦idr210,他们说是字符编码问题(文字信息采用GB13000的UCS-2进行存储),这块我不懂,PB里面在那里改?
//查找硬件设备
for i = 1001 to 1016
  li_ret1 = InitComm(i)
if li_ret1 = 1 then exit
next

IF li_ret1 = 1 THEN
//发现身份证
li_ret4 = Authenticate()
if li_ret4 <> 1 then
messagebox('提示','未发现身份证卡!')
return
end if

//ReadBaseMsgPhoto(ls_name, ls_sex, ls_mz, ls_csrq, is_sfzh, ls_address, agency, startdate, enddate)
li_ret3=ReadBaseInfos(ls_name, ls_sex, ls_mz, ls_csrq, is_sfzh, ls_address, agency, startdate, enddate)
// li_ret3=ReadBaseInfosPhoto(ls_name, ls_sex, ls_mz, ls_csrq, is_sfzh, ls_address, agency, startdate, enddate,'K:\360云盘\PB源码\身份证')
ReadIINSNDN(ls_code)
st_3.text=ls_code

   if ls_sex = '男' then ls_sex = '1'
if ls_sex = '女' then ls_sex = '0'

st_1.text=string(ls_name+ ls_sex+ ls_mz+ ls_csrq+is_sfzh+ls_address+agency+ startdate+enddate)
  if trim(ls_name)='' or isnull(ls_name) then
   messagebox('提示','没有找到相应的身份信息!')
   return
  end if 
  end if
  
  
  CloseComm()




------解决思路----------------------
pb什么版本,文字信息采用GB13000的UCS-2进行存储就是说精伦用的是unicode编码
------解决思路----------------------
用ToAnsi()把string转换成ansi的blob,然后再用string(blob)转换出来
------解决思路----------------------
pb9可以用以上办法处理,pb10以上版本就是unicode码的,如果有问题就不是字符集编码的问题了
------解决思路----------------------
pb10以上版本应该不会出现乱码,因为我这边就是用的精伦的读卡器,pb10下,如果pb9的版本就用ToAnsi(),fromAnsi()函数来转换
------解决思路----------------------
先用blob接受,然后转string 试试!
------解决思路----------------------
我做过这个,已经解决,[email protected]
------解决思路----------------------
is_sfzh=space(18)
  相关解决方案