`
孙国威
  • 浏览: 11744 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

解决Zxing扫描中文的问题

 
阅读更多

最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不是中文的问题..于网上参考了很资料.但效果还是不太理想..后来发现只要以ISO- 8859 - 1 的格式来编码,取出结果再进行相应的转换..问题就解决了.并不需要修改源码:以下是修改的方法

第一:先在CaptureActivity类中设置它的默认编码

 

[java]  view plain copy
  1. decodeFormats =  null ;  
  2. characterSet = "ISO-8859-1"

第二:你在取回结果的Activity中转换相应的编码.这里我是在ResultActivity类里作处理的

[java]  view plain copy
  1. public   class  ResultActivity  extends  Activity  implements  OnClickListener{  
  2.   
  3.     private  TextView dec_result;  
  4.     private  String resultStr;  
  5.     private  ImageView codeImage;  
  6.     private  Button returnChoujiang,returnJubao;  
  7.     @Override   
  8.     protected   void  onCreate(Bundle savedInstanceState) {  
  9.         // TODO Auto-generated method stub   
  10.         super .onCreate(savedInstanceState);  
  11.         setContentView(R.layout.dec_result);  
  12.         init();  
  13.         dec_result=(TextView)findViewById(R.id.dec_result);  
  14.         codeImage=(ImageView)findViewById(R.id.code_image);  
  15.         Intent intent=getIntent();  
  16.         resultStr=intent.getStringExtra("result" );  
  17.         String UTF_Str="" ;  
  18.         String GB_Str="" ;  
  19.         boolean  is_cN= false ;  
  20.         try  {  
  21.             System.out.println("------------" +resultStr);  
  22.             UTF_Str=new  String(resultStr.getBytes( "ISO-8859-1" ), "UTF-8" );  
  23.             System.out.println("这是转了UTF-8的" +UTF_Str);  
  24.             is_cN=IsChineseOrNot.isChineseCharacter(UTF_Str);  
  25.             //防止有人特意使用乱码来生成二维码来判断的情况   
  26.             boolean  b=IsChineseOrNot.isSpecialCharacter(resultStr);  
  27.             if (b){  
  28.                 is_cN=true ;  
  29.             }  
  30.             System.out.println("是为:" +is_cN);  
  31.             if (!is_cN){  
  32.                 GB_Str=new  String(resultStr.getBytes( "ISO-8859-1" ), "GB2312" );  
  33.                 System.out.println("这是转了GB2312的" +GB_Str);  
  34.             }  
  35.         } catch  (UnsupportedEncodingException e) {  
  36.             // TODO Auto-generated catch block   
  37.             e.printStackTrace();  
  38.         }  
  39.           
  40.           
  41.         Bitmap bm=intent.getParcelableExtra("IMG_return" );  
  42.         if (is_cN){  
  43.             dec_result.setText(UTF_Str);  
  44.         }else {  
  45.             dec_result.setText(GB_Str);  
  46.         }  
  47.         codeImage.setImageBitmap(bm);  
  48.           
  49.         returnChoujiang.setOnClickListener(this );  
  50.         returnJubao.setOnClickListener(this );  
  51.     }  


第三:以下就是判断是否在Unicode编码里

[java]  view plain copy
  1. public   class  IsChineseOrNot {  
  2.       
  3.     public   static   final   boolean  isChineseCharacter(String chineseStr) {    
  4.         char [] charArray = chineseStr.toCharArray();    
  5.         for  ( int  i =  0 ; i < charArray.length; i++) {       
  6.             //是否是Unicode编码,除了"�"这个字符.这个字符要另外处理   
  7.             if  ((charArray[i] >=  '\u0000'  && charArray[i] <  '\uFFFD' )||((charArray[i] >  '\uFFFD'  && charArray[i] <  '\uFFFF' ))) {    
  8.                 continue ;  
  9.             }  
  10.             else {  
  11.                 return   false ;  
  12.             }  
  13.         }    
  14.         return   true ;    
  15.     }    
  16.       
  17.     public   static   final   boolean  isSpecialCharacter(String str){  
  18.         //是"�"这个特殊字符的乱码情况   
  19.         if (str.contains( "�" )){  
  20.             return   true ;  
  21.         }  
  22.         return   false ;  
  23.     }  
  24. }  


 


最后这样就解决了ZXing的中文乱码问题.

 

 

分享到:
评论

相关推荐

    解决zxing二维码pdf417中文乱码问题

    5. 使用第三方库或自定义解决方案:如果ZXing库仍然无法解决问题,可以考虑使用其他支持中文的条码/二维码读取库,或者自定义解码逻辑。 在提供的压缩包文件"ZXing"中,可能包含了ZXing库的源代码或者其他相关资源...

    ZXing 2.1版GBK中文乱码解决办法

    ZXing 2.1版GBK中文乱码解决办法: zxing中扫瞄二维码图片,如果包含Gbk中文,乱码解决办法是修改DecodedBitStreamParser.h文件,在里面加入GBK的判断。 在2.1版本中,解码的定义不在这个类中了,挪到了...

    android二维码开发 ZXing(中文乱码已处理)

    本项目针对ZXing进行了优化,特别是解决了中文乱码的问题,使得开发者在处理包含中文字符的二维码时能够更加顺利。以下是关于ZXing二维码开发以及解决中文乱码问题的详细知识点: 1. **ZXing框架概述**: ZXing是...

    Xamarin下的Zxing扫描示例

    【Xamarin下的Zxing扫描示例】是一个使用Xamarin框架为Android平台开发的条形码和二维码扫描应用的实例。这个示例项目采用C#语言编写,利用了Visual Studio 2015或更高版本进行开发,而在Xamarin Studio环境下打开...

    Zxing Demo for Ios

    解决ZXing扫描中文乱码问题的关键在于字符编码的转换。在iOS中,系统默认使用的是UTF-8编码,而二维码的数据可能是其他编码格式,如GBK。因此,我们需要在解码过程中,将数据转换为正确的编码格式。具体步骤如下: ...

    zxing二维码扫描,仿微信(修改版)

    分析ZXingDemo的源代码,可以深入理解如何利用ZXing库实现二维码扫描功能,以及如何在实际应用中解决特定问题,如编码转换。这对于学习Android开发和二维码技术的人来说,是一个很好的实践案例。 总的来说,这个...

    xe 10 zxing扫描二维码和识别图片二维码及其优化策略.pdf

    文中提及的“xe 10 zxing扫描二维码和识别图片二维码及其优化策略.pdf”,涉及到DelphiXE在实现二维码扫描和识别图片二维码的功能,并探讨了如何优化这一过程。 首先,二维码(QR Code)是由日本的Denso Wave公司于...

    Zxing生成二维码(解决中文乱码)

    这是Zxing的源码,没有打包成jar利于学习使用。 使用时注意path的默认地址,Main类中是生成二维码的代码,GetMain类中是读取二维码的代码。 eclipse中Ctrl+Shift+R快速查找类 希望对你有所帮助。

    android扫描二维码中文乱码

    要解决"android扫描二维码中文乱码"的问题,我们需要对ZXing库进行一些定制化的修改。在描述中提到,已经有人通过修改ZXing.jar中的解码类来适配GBK编码。这个过程通常包括以下步骤: 1. **解压ZXing.jar**:首先,...

    zxing二维码扫描

    这个问题的解决意味着现在ZXing能够正确地读取和展示含有中文字符的二维码,这对于中国及全球其他使用汉字的语言环境来说至关重要。 在开发过程中,如果遇到类似的问题,开发者可能需要确保二维码的数据编码与解码...

    Zxing+Zbar扫码.rar

    在Android开发中,集成二维码和条形码扫描功能是一项常见的需求。Zxing和Zbar是两个流行的开源库,专门用于二维码和条形...在实际操作中,要注意解决可能出现的问题,如中文乱码,并根据用户界面和体验进行适当的定制。

    Zxing二维码识别

    Zxing扫描界面需要适应这两种屏幕方向。在AndroidManifest.xml中,可以声明Activity支持横屏和竖屏模式,同时在布局文件中设计响应的布局。在代码中,可以通过重写`onConfigurationChanged`方法来处理屏幕方向变化时...

    Android Zxing 源码修改

    本文将深入探讨如何在Android项目中修改Zxing源码,以解决中文乱码问题、从相册获取二维码图片进行解析、实现横屏到竖屏的切换以及添加闪光灯功能。 首先,解决中文乱码问题通常涉及到字符编码设置。在Zxing中,...

    Android二维码开发ZXing(乱码已处理)

    在这个资源中,开发者已经对ZXing进行了优化,去除了不必要的类,只保留了核心功能,同时也解决了中文乱码的问题,使得使用更加方便。 首先,我们来了解二维码的基本原理。二维码(Quick Response Code)是一种二维...

    zxing开源代码已做好中文注释可以直接运行

    作为一个开源项目,ZXing拥有活跃的开发者社区,持续更新和改进项目,同时也提供了丰富的示例和文档,方便开发者学习和解决问题。 总的来说,ZXing是一个强大且灵活的条形码和二维码处理库,经过中文注释的版本...

    Zxing二维码识别 android

    这篇博客将探讨如何在Android应用中集成Zxing进行二维码识别,并解决中文乱码问题,以及实现从相册选取图片进行解析、屏幕方向切换和闪光灯功能。 1. **集成Zxing到Android项目** 首先,你需要将Zxing库引入到你的...

    解决二维码中文乱码js包

    通常我们做二维码用qrcode.js的时候会出现中文乱码这个情况,只是因为本身qrcode.js这个包没有编译中文,现在调用utf16to8.js可以解决这个问题啦!经过本人测试时没问题的,如果有问题,可以私信联系我的!

    Zxing二维码生成

    总的来说,“Zxing二维码生成”插件提供了一个强大且灵活的二维码生成解决方案,无论是个人还是企业,都能从中受益。通过掌握其使用方法,你可以在多个领域中有效地利用二维码,提升效率并增强用户体验。

    zxing 补丁

    这个补丁通过增强对GBK编码的支持,解决了这个问题,使得ZXing能够处理更广泛的二维码数据,尤其是那些包含中文信息的二维码。 总的来说,这个补丁对于需要在中国市场使用ZXing库的开发者来说非常关键,因为它增强...

Global site tag (gtag.js) - Google Analytics