关于使用ZXing扫描二维码出现中文乱码的问题
来源:互联网 发布:淘宝运费险价格不一样 编辑:程序博客网 时间:2024/05/18 01:17
最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不是中文的问题..于网上参考了很资料.但效果还是不太理想..后来发现只要以ISO-8859-1的格式来编码,取出结果再进行相应的转换..问题就解决了.并不需要修改源码:以下是修改的方法
第一:先在CaptureActivity类中设置它的默认编码
decodeFormats = null;characterSet = "ISO-8859-1";
第二:你在取回结果的Activity中转换相应的编码.这里我是在ResultActivity类里作处理的
public class ResultActivity extends Activity implements OnClickListener{private TextView dec_result;private String resultStr;private ImageView codeImage;private Button returnChoujiang,returnJubao;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dec_result);init();dec_result=(TextView)findViewById(R.id.dec_result);codeImage=(ImageView)findViewById(R.id.code_image);Intent intent=getIntent();resultStr=intent.getStringExtra("result");String UTF_Str="";String GB_Str="";boolean is_cN=false;try {System.out.println("------------"+resultStr);UTF_Str=new String(resultStr.getBytes("ISO-8859-1"),"UTF-8");System.out.println("这是转了UTF-8的"+UTF_Str);is_cN=IsChineseOrNot.isChineseCharacter(UTF_Str);//防止有人特意使用乱码来生成二维码来判断的情况boolean b=IsChineseOrNot.isSpecialCharacter(resultStr);if(b){is_cN=true;}System.out.println("是为:"+is_cN);if(!is_cN){GB_Str=new String(resultStr.getBytes("ISO-8859-1"),"GB2312");System.out.println("这是转了GB2312的"+GB_Str);}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}Bitmap bm=intent.getParcelableExtra("IMG_return");if(is_cN){dec_result.setText(UTF_Str);}else{dec_result.setText(GB_Str);}codeImage.setImageBitmap(bm);returnChoujiang.setOnClickListener(this);returnJubao.setOnClickListener(this);}
第三:以下就是判断是否在Unicode编码里
public class IsChineseOrNot { public static final boolean isChineseCharacter(String chineseStr) { char[] charArray = chineseStr.toCharArray(); for (int i = 0; i < charArray.length; i++) { //是否是Unicode编码,除了"�"这个字符.这个字符要另外处理 if ((charArray[i] >= '\u0000' && charArray[i] < '\uFFFD')||((charArray[i] > '\uFFFD' && charArray[i] < '\uFFFF'))) { continue; } else{ return false; } } return true; } public static final boolean isSpecialCharacter(String str){ //是"�"这个特殊字符的乱码情况 if(str.contains("�")){ return true; } return false; }}
最后这样就解决了ZXing的中文乱码问题.
以上只是本人在工作中解决问题的记录.并不是什么技术文档.只供本人做一个记录.
- 关于使用ZXing扫描二维码出现中文乱码的问题
- 关于使用ZXing扫描二维码出现中文乱码的问题
- 关于zxing二维码扫描中文乱码问题
- 关于zxing二维码扫描开灯的问题
- iOS 使用Zbar 二维码扫描的时候, 出现中文乱码
- 使用zxing扫描二维码出现黑屏
- 使用ZXing的二维码扫描和生成问题记录
- 使用Zxing扫描到的二维码拉伸问题
- 关于zxing二维码扫描的总结
- 关于zxing扫描二维码的实现
- zxing扫描二维码遇到的一个问题
- Zxing二维码的扫描
- 二维码扫描第三库ZXing的使用
- 二维码扫描:ZBar,ZXing的使用
- 二维码扫描:ZBar,ZXing的使用
- Zxing 二维码扫描 的简单使用
- 使用zxing实现二维码的扫描功能
- Zxing 二维码扫描 的简单使用
- String and StringBuffer and StringBuilder的区别
- PPT 图形微调
- ASP.NET验证码(3种)
- edtFTPj/PRO 4.0 发布,Java 的 FTP 类库
- 复制当前单元格上一个单元格的内容到当前单元格
- 关于使用ZXing扫描二维码出现中文乱码的问题
- 架设SSH服务器与VNC远程桌面控制
- 推荐 30 款最好的免费项目管理软件
- jquery ui 的date
- Shell 脚本专家指南 学习笔记3 目录的复制
- 关于this和*this使用总结
- 设计软件的首要目标
- VB中的atn函数
- 在安全上Android很像Windows XP