`

ZXing 生成或读取二维码(解决中文乱码的问题)

 
阅读更多

ZXing 生成或读取二维码(解决中文乱码的问题) 

 

(一)zxing项目的介绍

ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。

Zxing可以解析的条码如下:

§ UPC-A and UPC-E

§ EAN-8 and EAN-13

§ Code 39

§ Code 128

§ QR Code

目前也也有实验支持DataMatrix和ITF编码。

你可以在

http://code.google.com/p/zxing/ 下载

 

(二)zxing项目库的组成部分

core: core decoding library, and the main component of the entire project

javame: JavaME client

javase: J2SE-specific client code

android: Android client (1.0 SDK)

androidtest: Android test app (1.0 SDK)

rim: RIM/Blackberry-specific client build

iphone: iPhone client + port to Objective C / C++ (QR code only)

zxingorg: The source behind zxing.org/w

zxing.appspot.com: The source behind our barcode generator

 

(三)ZXING 生成二维码

 

public class ZxingEncoderHandler
{
    public void encode(String contents, int width, int height, String imgPath)
    {
        try
        {
            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
                    BarcodeFormat.QR_CODE, width, height);
            MatrixToImageWriter
                    .writeToFile(bitMatrix, "png", new File(imgPath));
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args)
    {
        String imgPath = "d:/qrcode.png";
        String contents = "您好!微信湖:http://www.weixinhu.net/";
        try
        {
            // 如果不用更改源码,将字符串转换成ISO-8859-1编码
            contents = new String(contents.getBytes("UTF-8"), "ISO-8859-1");
        } catch (UnsupportedEncodingException e)
        {
            e.printStackTrace();
        }
        int width = 300, height = 300;
        ZxingEncoderHandler handler = new ZxingEncoderHandler();
        handler.encode(contents, width, height, imgPath);

        System.out.println("生成二维码成功!");
    }
}

 

 

(四)ZXING 解析二维码

 

public class ZxingDecoderHandler
{
    public String decode(String imgPath)
    {
        BufferedImage image = null;
        Result result = null;
        try
        {
            image = ImageIO.read(new File(imgPath));
            LuminanceSource source = new BufferedImageLuminanceSource(image);
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

            Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
            // 注意要使用 utf-8,因为刚才生成二维码时,使用了utf-8
            hints.put(DecodeHintType.CHARACTER_SET, "utf-8");
            result = new MultiFormatReader().decode(bitmap, hints);
            return result.getText();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args)
    {
        String imgPath = "d:/qrcode.png";
        ZxingDecoderHandler handler = new ZxingDecoderHandler();
        String decodeContent = handler.decode(imgPath);
        System.out.println("二维码内容:");
        System.out.println(decodeContent);
        System.out.println("解析二维码成功!");
    }
}

 

(五)、附件源码

 

 

 

 

分享到:
评论

相关推荐

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

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

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

    5. 使用第三方库或自定义解决方案:如果ZXing库仍然无法解决问题,可以考虑使用其他支持中文的条码/二维码读取库,或者自定义解码逻辑。 在提供的压缩包文件"ZXing"中,可能包含了ZXing库的源代码或者其他相关资源...

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

    本项目针对ZXing进行了优化,特别是解决了中文乱码的问题,使得开发者在处理包含中文字符的二维码时能够更加顺利。以下是关于ZXing二维码开发以及解决中文乱码问题的详细知识点: 1. **ZXing框架概述**: ZXing是...

    解决二维码中文乱码js包

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

    zxing识别二维码的C++版本,提供OpenCV接口

    总之,这个项目提供了一个方便的C++接口,使得开发者能够在OpenCV的环境中无缝使用ZXing进行二维码识别,大大简化了开发流程,并且解决了可能出现的中文乱码问题。通过深入理解这些技术,开发者可以构建出高效、可靠...

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

    ZXing,全称为“Zebra Crossing”,是一款开源的、跨平台的条码和二维码读取库。这个项目在Java平台上创建,但已经被移植到多个其他编程语言,包括Android。ZXing(读作“zebra crossing”)这个名字来源于交通斑马...

    Zxing二维码识别

    ### 解决中文乱码问题 在处理包含中文字符的二维码时,可能会遇到乱码的问题。这通常是因为编码设置不正确。在使用Zxing时,需要确保二维码解码时使用的是正确的字符集,例如UTF-8。在Android中,可以自定义解码配置...

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

    在Android平台上进行二维码开发时,ZXing库是一个广泛使用的开源项目,它提供了多种条形码和二维码的读取与生成功能。ZXing,全称Zebra Crossing,是Google推出的一个强大的条码处理库,适用于Java和Android应用。在...

    winfrom生成包含中文的二维码QRcode扫一扫不乱码

    KANJI模式适用于日文汉字,对于中文,我们可以选择字节模式,将中文字符转换为UTF-8或GBK等编码格式的字节流后再生成二维码。 在Winform应用中,可以使用开源的QRcode生成库,如ZXing.Net,它提供了方便的API来创建...

    .Net C#环境 二维码编码/解码组件

    在C#程序中生成和读取二维码主要有ThoughtWorks.QRCode和Zxing两种解决方案。个人体验认为,ThoughtWorks.QRCode的编码功能完善,使用灵活,但解码会发生乱码,由于缺少文档,一时找不到解决的办法;而Zxing的解码...

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

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

    zxing.net framwork4.0 中文字符集重新编译版本,pdf417二维码生成识别经测试可用

    标题提到的"zxing.net framwork4.0 中文字符集重新编译版本",是指针对.NET Framework 4.0的ZXing.Net库进行了特定的修改,以解决中文字符乱码的问题。在原始版本中,ZXing.Net可能无法正确处理某些非ASCII字符,...

    生成二维码(.NET VC++)

    本文将详细介绍如何使用.NET和VC++来实现二维码的生成,以及如何解决汉字乱码问题。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,它能存储比传统一维条形码更多的数据,...

    C#二维码支持中文

    本篇文章将深入探讨如何在C#编程环境中实现支持中文的二维码生成,以及解决乱码问题。 首先,我们需要理解二维码的工作原理。二维码是一种二维条形码,通过矩阵式编码技术存储数据,可以包含文字、数字、URL等多种...

    Java实现 生成 带 Logo 二维码

    本篇文章将深入探讨如何在Java中实现这个功能,并解决可能遇到的中文乱码问题。 首先,我们需要一个可靠的二维码生成库。在Java世界里,ZXing(Zebra Crossing)是一个广泛使用的开源库,它提供了多种二维码和条形...

    (原创)Delphi XE生成二维码并在fastreport中调用显示

    ZXing是一个开源的、跨平台的条码和二维码读取与生成库,而QrCodeDelphi则是专为Delphi设计的轻量级二维码生成组件。这里我们以ZXing为例,介绍如何在Delphi项目中集成二维码生成功能。 1. 集成ZXing库: - 下载...

    二维码生成和识别 支持汉字和特殊字符(有源代码)

    总之,这个资源提供了一种支持汉字和特殊字符的二维码生成解决方案,结合ThoughtWorks.QRCode.dll库,可以帮助开发者快速实现这一功能。通过深入学习和实践,你可以进一步掌握二维码技术,并将其应用于各种创新项目...

    zxing二维码扫描

    这个问题的解决意味着现在ZXing能够正确地读取和展示含有中文字符的二维码,这对于中国及全球其他使用汉字的语言环境来说至关重要。 在开发过程中,如果遇到类似的问题,开发者可能需要确保二维码的数据编码与解码...

    Zxing Demo for Ios

    《ZXing iOS版中文乱码问题的解决方案及Demo解析》 在iOS开发中,集成二维码和条形码扫描功能时,ZXing库是一个常见的选择。然而,开发者在使用ZXing时,常常会遇到一个问题——扫描中文内容时出现乱码。这无疑给...

    C#二维码 中文 图片

    虽然描述中提到“翻译自己生成的图片有Bug”,这可能指的是在生成二维码图片后,进行解码或显示时出现问题。这可能是由于图片处理不当,比如像素设置错误,或者编码和解码过程中的格式不匹配。解决这类问题通常需要...

Global site tag (gtag.js) - Google Analytics