在做项目的时候用到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;
生成界面:
识别界面: