iPhone ZBar库 中文乱码解决方法--重新编译libzbar.a
2012-10-19 10:39
676 查看
zbar下载主页,有源码 http://zbar.hg.sourceforge.net/hgweb/zbar http://sourceforge.net/p/zbar/code/ci/default/tree/
或者:http://download.csdn.net/detail/ydj213/4810522
ZBar 有个问题,对于中文二维码的支持经常出现乱码。ZBar 缺省支持 SHIF-JIS, UTF-8, ISO8859-1 ,但是不支持 GB18030,而很多生成的二维码都是 GB18030 (或者 GBK, GB2312)的,所以 ZBar 解码出来就直接乱码了
这个修改其实很简单,只需要修改一个文件就可以了,见下面代码。
zbar/qrcode/qrdectxt.c
Objective-C
下面的问题来了,我们下载的iphone zbar sdk 里并没有这个文件,只有libzbar.a
这就需要我们用源码重新编译libzbar.a
1、在这个问题上我走了弯路,搞了一天都在尝试用terminal编译一对c代码包,后来发现我下载的项目有问题。可用的下载地址如下
http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/file/146b857ff41a
将这个文件包下载下来,我的文件夹名字是:zbar-146b857ff41a,打开这个文件夹,找到iphone文件夹,如下用xcode打开zbar.xcodeproj
这时候我编译会报错因为libzbar.a还没有编译成功。examples文件夹下的实例项目会报错,我索性把这个文件夹删掉。这样就可以编译成功了。我用的是xcode4.4.1
2、按上面所说的修改/src/zbar/qrcode/qrdectxt.c文件
3、这里选择这个
4、Xcode导航product->Edit Scheme
好了现在编译就行了
5、
编译前libzbar.a文件是红色的,编译成功后是黑色的
6、右击这个文件选择Show in Finder,就能在Finder中找到这个文件了
参考了孤狼吠月的博客
或者:http://download.csdn.net/detail/ydj213/4810522
ZBar 有个问题,对于中文二维码的支持经常出现乱码。ZBar 缺省支持 SHIF-JIS, UTF-8, ISO8859-1 ,但是不支持 GB18030,而很多生成的二维码都是 GB18030 (或者 GBK, GB2312)的,所以 ZBar 解码出来就直接乱码了
这个修改其实很简单,只需要修改一个文件就可以了,见下面代码。
zbar/qrcode/qrdectxt.c
Objective-C
intqr_code_data_list_extract_text(constqr_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; constqr_code_data *qrdata; int nqrdata; unsignedchar *mark; int ntext; int i; qrdata=_qrlist->qrdata; nqrdata=_qrlist->nqrdata; mark=(unsignedchar*)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"); |
这就需要我们用源码重新编译libzbar.a
latin1_cd=iconv_open("UTF-8","ISO8859-1"); sjis_cd=iconv_open("UTF-8","GB2312"); utf8_cd=icon_open("UTF-8","UTF-8");
1、在这个问题上我走了弯路,搞了一天都在尝试用terminal编译一对c代码包,后来发现我下载的项目有问题。可用的下载地址如下
http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/file/146b857ff41a
将这个文件包下载下来,我的文件夹名字是:zbar-146b857ff41a,打开这个文件夹,找到iphone文件夹,如下用xcode打开zbar.xcodeproj
这时候我编译会报错因为libzbar.a还没有编译成功。examples文件夹下的实例项目会报错,我索性把这个文件夹删掉。这样就可以编译成功了。我用的是xcode4.4.1
2、按上面所说的修改/src/zbar/qrcode/qrdectxt.c文件
3、这里选择这个
4、Xcode导航product->Edit Scheme
好了现在编译就行了
5、
编译前libzbar.a文件是红色的,编译成功后是黑色的
6、右击这个文件选择Show in Finder,就能在Finder中找到这个文件了
参考了孤狼吠月的博客
相关文章推荐
- iPhone ZBar库 中文乱码解决方法--重新编译libzbar.a
- iPhone ZBar库 中文乱码解决方法--重新编译libzbar.a
- iPhone ZBar库 中文乱码解决方法--重新编译libzbar.a 请勿转载
- iPhone ZBar库 中文乱码解决方法
- iPhone ZBar库 中文乱码解决方法
- redhat7中Codeblocks编译c程序乱码问题 中文乱码解决方法
- BCGCONTROLBAR中文菜单栏乱码情况解决方法
- 编译安装vim7.3中文显示乱码解决方法
- QT 5.9版本 使用MSVC2015编译时出现中文字符乱码问题的解决方法
- 【献给初学者】在wamp环境下php及mysql中文乱码解决方法(原来的账号丢了~所以重新发一次)
- BCGCONTROLBAR中文菜单栏乱码情况解决方法
- mac osx wine 1.7.5 源码编译方法及中文乱码的解决
- mac osx wine 1.7.5 源码编译方法及中文乱码的解决
- mac osx wine 1.7.5 源码编译方法及中文乱码的解决
- 解决传参 中文乱码的方法
- MyEclipse中文乱码解决方法
- 解决Ruby中文字符串【乱码】的方法
- cmd模式下中文乱码的解决方法(注册表)
- 玩转web之ajax(一)---使用表单的serialize()方法中文乱码解决