zxing QR码中文识别乱码解决

在做项目的时候用到zxing开源库进行二维码的识别,一开始被不能识别中文这个问题困扰了很久,网上查阅了很多资料,没有哪篇文章真正解决了问题 。阅读google源代码,今天终于得以解决,和大家分享,搞清楚了不难,具体步骤如下:

 1:下载zxing最新版本,下载地址:http://download.csdn.net/detail/xiaoyanghijk/7165781

找到charp文件夹。

2:进入qrcode 下的encode文件夹,修改Encode.cs下的语句

    internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";

  改为  internal const System.String DEFAULT_BYTE_MODE_ENCODING = "UTF-8"; //选择编码模式

3:进入decode文件夹,修改guessEncoding函数,这个函数的目的是猜测编码类型,不用猜了,我直接把它改为return UTF-8,其余一律注释掉。自己编码的,当然知道编码模式。

4 :生成dll

 将dll放入自己的识别文件夹下,调用生成和解码函数就可以实现中、英文的生成和解码。

生成代码:

 String content = textBox2.Text;
            COMMON.ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 350, 350);//图片是350*350大小
           // Bitmap bmap = toBitmap(byteMatrix);
            Bitmap bmap = byteMatrix.ToBitmap();
            pictureBox1.Image = bmap;

 

解码代码:

  
                Bitmap bmap = new Bitmap(Openfile.FileName);
               // int code_length=bmap.le
                LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height);
                com.google.zxing.BinaryBitmap bitmap = new com.google.zxing.BinaryBitmap(new COMMON.HybridBinarizer(source));
                Result result;
                result = new MultiFormatReader().decode(bitmap);
                String decodedString = result.Text;
                textBox15.Text = decodedString;

生成界面:

 

 识别界面:

转载请注明出处:http://write.blog.csdn.net/postedit/23258897

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android ZXing是一个开源的条形码扫描库,可以用于在Android应用中实现条形码的扫描和识别功能。ZXing库提供了丰富的API,可以轻松地集成到你的Android项目中。 要使用ZXing库进行条形码扫描识别,首先需要在你的项目中添加ZXing库的依赖。可以通过在build.gradle文件中添加以下代码来引入ZXing库: ``` implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` 接下来,你可以在你的Activity中创建一个扫描界面,并使用ZXing库提供的CaptureActivity来实现扫描功能。你可以通过以下代码来启动扫描界面: ```java IntentIntegrator integrator = new IntentIntegrator(this); integrator.setCaptureActivity(CaptureActivity.class); integrator.setOrientationLocked(false); integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES); integrator.setPrompt("Scan a barcode"); integrator.initiateScan(); ``` 在扫描结果返回的回调方法中,你可以获取到扫描到的条形码数据。例如: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); } else { String barcode = result.getContents(); Toast.makeText(this, "Scanned: " + barcode, Toast.LENGTH_LONG).show(); } } } ``` 以上就是使用Android ZXing库进行条形码扫描识别的简单介绍。如果你还有其他问题,请继续提问。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值