`
407827531
  • 浏览: 1073925 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

ZXing扫描二维码出现中文乱码的问题

 
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

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

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

 

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

 

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

[java] view plaincopy
  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 plaincopy
  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生成二维码(解决中文乱码)

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

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

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

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

    例如,如果你的项目配置为使用默认的非Unicode编码,那么在处理多语言字符时可能出现问题。 3. 解码参数:ZXing库可能需要特定的解码配置来正确处理中文。例如,需要确保`DecodeHintType.CHARACTER_SET`被设置为...

    android扫描二维码中文乱码

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

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

    在处理包含中文字符的二维码时,ZXing原版可能会出现乱码情况,这是因为默认的字符编码不支持中文。本项目已经修复了这个问题,确保在解码过程中正确地处理中文字符,使其在显示时保持可读性。 4. **核心包集成**...

    解决二维码中文乱码js包

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

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

    1.详细的Demo 可正常扫描 2.zxing框架代码已简化,只保留了核心代码 ...2.包含zxing的核心包(中文乱码问题已处理) 3.有详细的扫描调用方法及说明 4.有详细的项目集成方法及说明 5.不明白可以直接看Demo

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

    在描述中提到的“utf-8,与gbk编码问题”是指在处理汉字时可能出现的编码不兼容问题。UTF-8是国际通用的Unicode编码,支持全世界几乎所有的字符,而GBK是中国大陆常用的一种中文编码,包含大部分简体中文字符。在...

    通过将资源库图片转化为Bitmap,使用Zxing库完成多二维码识别

    为了识别图片中的所有二维码,你需要使用图像分割或多次扫描的方法。一种常见的做法是将图片切割成多个小块,然后分别进行解码。 在Android Studio 3.1.3和gradle 4.4环境下,上述步骤将确保你的应用能够识别资源库...

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

    - **乱码处理**:在处理中文字符时,可能出现乱码问题。通常,这与字符编码格式不一致有关。开发者可能已经通过设置正确的字符集(如UTF-8)解决了这个问题,确保中文能够正确显示。 2. **二维码生成**: - **...

    Zxing二维码识别

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

    Zxing二维码识别 android

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

    zxing二维码扫描

    综上所述,ZXing是一个强大的二维码和条形码扫描库,它的最新版本修复了中文乱码问题,使得在处理中文内容时更加稳定可靠。对于开发者而言,这意味着可以更放心地在各种项目中集成ZXing,特别是在处理多语言内容的...

    Xamarin下的Zxing扫描示例

    这个示例项目采用C#语言编写,利用了Visual Studio 2015或更高版本进行开发,而在Xamarin Studio环境下打开可能会出现中文乱码问题。以下是对该项目涉及的技术点的详细解释: 1. **Xamarin**: Xamarin是一款跨平台...

    Zxing Demo for Ios

    然而,由于编码差异和处理方式的不同,当ZXing扫描到包含中文字符的二维码或条形码时,如果没有进行特殊处理,往往会出现乱码现象。 解决ZXing扫描中文乱码问题的关键在于字符编码的转换。在iOS中,系统默认使用的...

    二维码Zbar(解决中文乱码)附带demo

    在实际应用中,除了ZBar,还有其他二维码库如ZXing(Zebra Crossing)也支持二维码的读取,同样需要注意处理中文乱码的问题。了解这些解决方案对于开发涉及多语言环境的二维码应用至关重要,特别是在中国和其他使用...

    二维码扫描器

    在本文中,我们将深入探讨基于Google的Zxing库开发的二维码扫描器,以及如何解决中文乱码问题。 首先,Zxing,全称“Zebra Crossing”,是一个开源的、跨平台的条码解码库。它支持多种条码格式,包括常见的QR码、...

    ZXing 3.3.2 多种格式的条码(二维码)图像处理库

    Zxing是一个开源的用Java实现的多种格式的1D/2D条码图像处理库,它包含了连接到其他语言的...经测试支持中文内容,扫码不会出现中文乱码,在项目中只需导入该jar包即可运行二维码功能实现演示类ZXingCodeDemo.java。

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

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

Global site tag (gtag.js) - Google Analytics