iPhone ZBar库 中文乱码解决方法--重新编译libzbar.a

ZBar 有个问题,对于中文二维码的支持经常出现乱码。ZBar 缺省支持 SHIF-JIS, UTF-8, ISO8859-1 ,但是不支持 GB18030,而很多生成的二维码都是 GB18030 (或者 GBK, GB2312)的,所以 ZBar 解码出来就直接乱码了


这个修改其实很简单,只需要修改一个文件就可以了,见下面代码。


zbar/qrcode/qrdectxt.c
Objective-C
int qr_code_data_list_extract_text ( const qr_code_data_list *_qrlist ,
                                   zbar_image_scanner_t *iscn ,
                                   zbar_image_t *img )
{
   iconv_t               sjis_cd ;
   iconv_t               utf8_cd ;
   iconv_t               latin1_cd ;
   const qr_code_data   *qrdata ;
   int                    nqrdata ;
   unsigned char        *mark ;
   int                    ntext ;
   int                    i ;
   qrdata = _qrlist -> qrdata ;
   nqrdata = _qrlist -> nqrdata ;
   mark = ( unsigned char * ) calloc ( nqrdata , sizeof ( *mark ) ) ;
   ntext = 0 ;
   /*This is the encoding the standard says is the default.*/
// 重点在这里,我们不要 ISO8859-1,直接换成 GB18030 就可以了
   //latin1_cd=iconv_open("UTF-8","ISO8859-1");
  latin1_cd=iconv_open("UTF-8","GB18030");
   /*But this one is often used, as well.*/
   sjis_cd = iconv_open ( "UTF-8" , "SJIS" ) ;
   /*This is a trivial conversion just to check validity without extra code.*/
   utf8_cd = iconv_open ( "UTF-8" , "UTF-8" ) ;


http://blog.csdn.net/nextj/article/details/8088759


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值