(转载)[Android开发]zxing扫描结果乱码
ZXing扫描二维码出现中文乱码的问题
最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不是中文的问题..于网上参考了很资料.但效果还是不太理想..后来发现只要以ISO-8859-1的格式来编码,取出结果再进行相应的转换..问题就解决了.并不需要修改源码:以下是修改的方法
第一:先在CaptureActivity类中设置它的默认编码
[java] view plaincopy
decodeFormats = null;
characterSet = "ISO-8859-1";
第二:你在取回结果的Activity中转换相应的编码.这里我是在ResultActivity类里作处理的
[java] view plaincopy
public class ResultActivity extends Activity implements OnClickListener{
private TextView dec_result;
private String resultStr;
private ImageView codeImage;
private Button returnChoujiang,returnJubao;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.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 block
e.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编码里
[java] view plaincopy
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的中文乱码问题.
(转载)[Android开发]zxing扫描结果乱码的更多相关文章
- Android开发——通过扫描二维码,打开或者下载Android应用
Android开发——通过扫描二维码,打开或者下载Android应用 在实现这个功能的时候,被不同的浏览器折磨的胃疼,最后实现了勉强能用,也查考了一下其他人的博客 android实现通过浏览器点击 ...
- [置顶]
xamarin android使用zxing扫描二维码
好久没写了,这片文章篇幅不长,概述一下在xamarin android中用 ZXing.Net.Mobile库扫描二维码读取url的示例.扫码支付,扫码登录,App上各种各样的扫码,好像没个扫码的就有 ...
- [转载]Android开发必备的21个免费资源和工具
转载自: http://blog.csdn.net/shimiso/article/details/6788375 Android移动开发平台现在不是一个“火”字能形容的,今年Android平台在市场 ...
- Android开发之扫描二维码开发
原贴地址:http://www.cnblogs.com/Fndroid/p/5540688.html 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心 ...
- Android开发之扫描附近wifi热点并列表显示
近期项目中用到了wifi模块.今天做一个简单的总结. 參考:http://www.2cto.com/kf/201310/253617.html 1.如何获取wifi对象并进行操作 要操作WIFI设备, ...
- [转载]Android开发常用调试技术记录
ANDROID 调试技术: 1)Ps 指令 ls –l /proc/27/ cat /proc/27/cmdline #cmdline文件表示了这个进程所在的命令行. cat /proc/ ...
- Android 开发笔记-Eclipse中文乱码
使用eclipse时经常中文乱码网上搜罗了下解决办法: 使用Eclipse编辑文件经常出现中文乱码或者文件中有中文不能保存的问题,Eclipse提供了灵活的设置文件编码格式的选项,我们可以通过设置 ...
- Android自定义zxing扫描界面的实现
首先,我们需要导入zxing的jar文件,其次复制所需要的资源文件以及放入自己需要添加的资源文件,复制出源码的必要相关类文件.对布局文件进行一定的修改,再修改CaptureActivity与Viewf ...
- [转载]Android相关开发网站
my: Android 开发官方文档国内镜像-踏得网: http://wear.techbrood.com/index.html 转载自: http://my.oschina.net/luforn/b ...
随机推荐
- $.ajax 和$.post的区别
https://blog.csdn.net/weixin_39709686/article/details/78680754
- c# CacheHelper缓存帮助类
一.开篇 主要功能:改善程序性能.服务器的响应速度,尤其是当数据的处理过程变得复杂以及访问量变大时,变得比较明显.有些数据并非时刻在发生变化,如果我们可以将一些变化不频繁的数据的最终计算结果(包括页面 ...
- 修改WebAPI路由控制访问
1.方式一:修改RouteConfig.cs文件 2.方式二:通过在方法上方添加[Route("api/XXXX")]来控制
- Eclipse插件Lambok,实现自动生成Java代码
1.下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar 2.运行Lombok.jar: java -jar D:\00 ...
- 玩转 sublime3 第一弹 文件介绍
安装 官网下载地址:http://www.sublimetext.com/3 本文将以Windows 64 bit 进行讲解. 目录介绍 sublime默认安装之后会生成一个安装目录和数据目录: C: ...
- IntelliJ Idea下Go项目开启Debug调试
1.新建Go项目,创建入口go文件(Test1.go),随便写点啥,比如: package main import "fmt" func main(){ fmt.Println(& ...
- Linux下安装桌面
1. 安装之前先测试是否有桌面 2. 建立yum源文件 3. 挂载好光盘(/rhel自己创建) 4. 使用yum list 查看 ...
- 页面定制CSS代码初探(三):设置正文最小高度
前言 没想到再次写这篇,已经过去1年半了. 现在审美也发生了改变,一开始做的样式全删了,只保留了h2的样式.原先认为界面要宽,两边留太多空很浪费,看惯了知乎和简书,觉得默认最大1000px的排版也不错 ...
- Model、ModelMap和ModelAndView的使用详解
https://blog.csdn.net/itbiggod/article/details/79685610
- JS优化代码
JS代码的执行效率往往直接影响了页面的性能,有的时候,实现同样的功能,不同的JS代码往往在效率上相 差很多,有的时候仅仅是由于我们的书写习惯导致的,当然在高级点的浏览器中,它们大多都已经帮我们优化了, ...