`
孙国威
  • 浏览: 11223 次
  • 性别: 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中文乱码问题

    解决zxing二维码pdf417中文乱码问题 编译.net 2.0 4.0

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

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

    Zxing Demo for Ios

    解决zxing扫描中文乱码的问题 下载后可以直接使用这个demo里面的zxing 不需要再去下源码 然后重新删除

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

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

    解决二维码中文乱码js包

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

    Android Zxing 源码修改

    提供Android 的中文乱码解决 提供从相册获取二维码照片解析 横屏切换为竖屏 提供闪光灯功能

    zxing.java源码解析-ScanandMoney:扫一扫

    使用开源ZXing扫描的缺点 1、原始代码是横屏模式,尽管可以改成竖屏,但是扫描界面的自定义和多屏幕适配不好做 2、有效扫描区域不好控制,可能是我自己技术不成熟,没找到好方法 3、ZXing是Java写的,对二维码的解析...

    二维码扫描器

    基于google的Zxing的扫描器(二维码、条形码),并解决中文乱码的问题

    BGAQRCode-Android:QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

    :person_running:BGAQRCode-Android:person_running: 目录 功能介绍 根据的产品需求,参考 改的,希望能... ZBar 扫描条码、二维码「已解决中文乱码问题」 ZBar 识别图库中的条码、二维码图片 常见问题 1.部分手机无

    BGAQRCode-Android:QRCode扫描二维码,扫描条形码,相册获取图片后识别,生成带Logo二维码,支持微博微信QQ二维码扫描样式

    :person_running: BGAQRCode-Android :person_running: ... ZBar扫描条码,二维码「已解决中文乱码问题」 ZBar识别图库中的条码,二维码图片 常见问题 1.部分手机无法扫描出结果,扫描预览界面二维码被压缩

    Android 二维码扫描 竖屏 中文注释 源码

    Zxing项目里的Android实现太过复杂多余东西太多,得对其进行简化。本代码完成了部分中文注释。而且实现了竖屏扫描,解决了竖屏屏幕拉伸的问题。经过手机测试完全可用。

    二维码扫描案例

    首先说一下目前大家常用的方法的不足吧:一、 使用开源Zxing扫描1、原始代码是横屏模式,尽管可以改成竖屏,但是扫描界面的自定义和多屏幕适配不好做2、有效扫描区域不好控制,可能是我自己技术不成熟,没找到好方法...

    实现支持二维码及条形码生成与扫描

    8,但是还是有同样的问题,后面就找zxin的源码发现,在jar包里面默认的编码有问题,有兴趣的朋友可以在这里下载zxing的源码,http://code.google.com/p/zxing/ 不是采用utf-8,这样问题就得以解决,布局很简单如下图...

    ZBarScanProj

    该项目主要是基于ZBar开源项目,在Android平台进行二维码扫描的功能,其中解决了中文乱码问题,添加的扫描框,具体可以查看博客 http://blog.csdn.net/skillcollege

    java开源包1

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

    java开源包11

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

    java开源包2

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

    java开源包3

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

    java开源包6

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

    java开源包5

    条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的...

Global site tag (gtag.js) - Google Analytics