java在二维码的生成和解析上,网上有些人说如果要解析中文,得去修改工具包的Encoder类中的 static final String DEFAULT_BYTE_MODE_ENCODING = "ISO8859-1";
将编码改成utf-8或者gbk,这种方式可行,不过破坏了封装的原则,而且还得重新编译,特别是这种依赖于第三方的东西,如果谷歌将zXing包又升级了,而你也想跟着升级
到最新的版本,是不是又得去改一次那个编码,然后再编译一次替换,这样的话这种处理方式不是那么的方便,事实上其实可以不用去改里面的编码,我们只要在解析和

生成的时候将中文字符串转化一下就可以了,下面是java利用zxing包对相关信息生成和解析二维码的一个简单代码,可参照一下,暂时我就用这种方式处理

package com.gen;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Map;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.ReaderException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;

/**
 * 简单利用谷歌的zXing包来生成和解析二维码QRCode
 *
 * @date 2014-06-12
 * @author aGuang
 *
 */
public class QrCode {
 //此处定义颜色的16位进制值,可换其他颜色,不过一般使用黑白颜色来生成
 private static final int BLACK = 0xff000000;
 private static final int WHITE = 0xFFFFFFFF;

/**
  * @param args
  */
 public static void main(String[] args) {
  QrCode qrc = new QrCode();

//文件的后缀名
  String filePostfix = "png";
  File file = new File("C:/Users/Administrator/Desktop/二维码." + filePostfix);
  String context = "中文测试" + 123 + ",./";
  
  //调用封装的生成函数
  qrc.encode(context, file, filePostfix, BarcodeFormat.QR_CODE,
    200, 200, null);
  qrc.decode(file);
 }

/**
  *
  * 此处生成QRCode二维码<br>
  *
  * @param contents
  *            二维码的内容
  * @param file
  *            二维码生成的文件
  * @param filePostfix
  *            生成二维码图片的格式,可以用PNG或JPG或GIF等等
  * @param format
  *            qrcode码的生成格式
  * @param width
  *            图片宽度
  * @param height
  *            图片高度
  * @param hints
  */
 public void encode(String contents, File file, String filePostfix,
   BarcodeFormat format, int width, int height,
   Map<EncodeHintType, ?> hints) {
  try {
   BitMatrix bitMatrix = new MultiFormatWriter().encode(new String(contents.getBytes("GBK"),"ISO8859-1"),
     format, width, height);
   catchToFile(bitMatrix, filePostfix, file);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

/**
  * 生成二维码图片<br>
  *
  * @param matrix
  * @param format
  *            图片格式
  * @param file
  *            生成二维码图片位置
  * @throws IOException
  */
 public static void catchToFile(BitMatrix matrix, String format, File file)
   throws IOException {
  BufferedImage image = toBufferedImage(matrix);
  ImageIO.write(image, format, file);
 }

/**
  * 生成二维码内容<br>
  *
  * @param matrix
  * @return
  */
 public static BufferedImage toBufferedImage(BitMatrix matrix) {
  int width = matrix.getWidth();
  int height = matrix.getHeight();
  BufferedImage image = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_ARGB);
  for (int x = 0; x < width; x++) {
   for (int y = 0; y < height; y++) {
    image.setRGB(x, y, matrix.get(x, y) == true ? BLACK : WHITE);
   }
  }
  return image;
 }

/**
  * 解析二维码内容
  */
 @SuppressWarnings("unchecked")
 public void decode(File file) {
  try {
   BufferedImage image;
   try {
    image = ImageIO.read(file);
    if (image == null) {
     System.out.println("该文件不能解码");
    }
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
      source));
    Result result;
    Hashtable hints = new Hashtable();
    // 解码设置编码方式为:GBK
    hints.put(DecodeHintType.CHARACTER_SET, "GBK");
    result = new MultiFormatReader().decode(bitmap, hints);
    String resultStr = result.getText();
    System.out.println("解析后的内容为:" + resultStr);
   } catch (IOException ioe) {
    ioe.printStackTrace();
   } catch (ReaderException re) {
    re.printStackTrace();
   }
  } catch (Exception ex) {
   ex.printStackTrace();
  }
 }
}

注:当前二维码的生成及解析另外需要依赖于包zxing 的core.jar 与javase.jar

javase.jar下载http://download.csdn.net/detail/aguang_vip/7487129

core.jar下载http://download.csdn.net/detail/aguang_vip/7487117

java利用zxing来生成和解析二维码,支持中文相关推荐

  1. C#利用ZXing.Net生成条形码,二维码和带Logo的二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  2. java生成与解析二维码 支持插入图片与文字

    1.依赖: <!-- https://mvnrepository.com/artifact/com.google.zxing/core --><dependency><g ...

  3. 使用zxing生成与解析二维码

    随着二维码的普及,二维码在生活中的使用使用的场景也越来越来多,本文章就来介绍使用zxing来生成与解析二维码.生成二维码的开源项目很多,选择zxing则是因为其出自Google并且长期有人进行维护,值 ...

  4. Java实现生成和解析二维码

    Java实现生成和解析二维码 文章目录 Java实现生成和解析二维码 一.建立项目 二.创建工具类 三.创建启动类 一.建立项目 首先需要创建一个普通的 Maven 项目,在这里我用的是 google ...

  5. Java生成和解析二维码工具类(简单经典)

    Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  6. java生成以及解析二维码

    java生成以及解析二维码 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 ...

  7. Zxing和QR CODE 生成与解析二维码实例(普通篇)

    首先下载对应的jar包,本实例用的是Zxing2.2jar 下载地址:http://download.csdn.net/detail/gao36951/8161861 Zxing是Google提供的关 ...

  8. Java生成和解析二维码

    前言:曾经有做过不少微信公众号和移动网站的项目,对二维码还算有点了解,刚收到这个任务的时候就想着竟然要用二维码存文本,那就得先考究一下这小小的二维码到底能存多少的东西了. 需求:使用二维码存放文本(x ...

  9. SpringBoot 整合zxing生成或解析二维码

    生成无Logo二维码 . 有Logo二维码 和 解析二维码内容 一.导包 二.Demo 三.结果 一.导包 zxing地址:https://mvnrepository.com/artifact/com ...

最新文章

  1. 阿里全面进军 IoT 两年后,又放大招!
  2. js 绑定的键盘事件
  3. kafka学习笔记:知识点整理
  4. 关于移动应用APP数据安全的一点见解
  5. 【数据库】数据库基本概念:数据库管理系统 / 数据库 / 表 / 数据
  6. Ubuntu下Apache+php+mysql网站架设详解
  7. 西门子STEP7 MICROWIN V4 SP5 下载
  8. 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证....
  9. 改善程序与设计的55个具体做法 day5
  10. 中国湖北区域汉至现代行政区划GIS数据
  11. JavaWeb从入门到精通 二
  12. SecoClient接收返回码超时
  13. 网站死链检测的软件-网站死链检测的工具
  14. python去重保留唯一一个值_python 去重和保留重复值方法 duplicated 和 drop_duplicates...
  15. CSS压缩之:正则五步替换法
  16. css选择器(id选择器)
  17. 直属上司,才是你最该管的人
  18. Tcl/Tk入门(上)
  19. arttemplate+ajax 转 vue
  20. This beta version of Typora is expired,please download and install a newe..解决方案

热门文章

  1. TeamViewer 错误信息:未知的原因。 请升级到最新版本
  2. 如何使用ecahrts绘制人口迁徙图
  3. 嘴型同步模型Wav2Lip
  4. scarab postgres installation notes
  5. 分布式文件管理系统FastDFS搭建教程(FastDFS+nginx+fastdfs-nginx-module)
  6. 上传头像时圆形裁剪框
  7. 只有程序员才会有的经历,最后一件事是个人都顶不住
  8. 蕤仁肉(内仁肉、泪仁肉)简单介绍
  9. 那个2013年我读过的书
  10. 数据采集、数据处理积累