首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[ ZBar ]如何用ZBar解码包含汉语(utf-8)的qr码?

[ ZBar ]如何用ZBar解码包含汉语(utf-8)的qr码?
EN

Stack Overflow用户
提问于 2021-12-29 07:50:05
回答 1查看 185关注 0票数 0

我使用的是libZbar,当我解码哪些QR包含中文(GBK字符)时,它解码QR代码是快速的,但是当解码包含汉语的QR (UTF-8)时,它会返回错误语言在这里输入图像描述

这是QR内容“EXij EXij/!:;EXij 0008”,但当我使用EXij解码时,它显示的是“蠅ィ豌エ螂ス螟哘Xij/!:;EXij 0008”,我找到了“EXij.”->“Xij.”然后,我检查了一些处理这个问题的方法,我检查了libZbar源代码/zbar-0.10/zbar/qrcode/qrdectxt.c,他们都修改了这个代码it 8859-1 -> GB18030或GB2312,但是它帮不了我。

代码语言:javascript
复制
/*This is the encoding the standard says is the default.*/   
        latin1_cd=iconv_open("UTF-8","ISO8859-1"); 
/*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");

我的程序是在linux上运行的,正常的中文(utf-8)显示得很好,Zbar已经将utf8编码的内容转换成其他的编码格式。这不是我需要的步骤,但我不能评论整个代码。我能做什么?

  1. 修改代码的这一部分,但我不太明白在哪里修改这部分代码。
  2. 将zbar转换后的字符转换回utf8后,我尝试了它,iconv()调用失败并返回-1。 int ret =0;iconv_t cd;cd = iconv_open("sjis",“utf-8”);//或int 8859-1到utf-8 iconv_close(cd);第45行中的zbar源代码function:qr_code_data_list_extract_text

在这里输入链接描述

EN

回答 1

Stack Overflow用户

发布于 2022-01-04 02:51:10

我用Qt构建了一个c项目,然后由step.this qr代码进行调试,它不包含utf8标志,因此它将使用enc_list来处理文本,首先更改enc_list[] utf8_cd ->的索引。

enc_list[2]=sjis_cd; enc_list[1]=latin1_cd; enc_list[0]=utf8_cd;

代码语言:javascript
复制
 if(inleft>=3&&in[0]==(char)0xEF&&in[1]==(char)0xBB&&in[2]==(char)0xBF)
 {
                in+=3;
                inleft-=3;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70516540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档