Barcode修改二维码对中文的支持
时间:2020-01-03
本文章向大家介绍Barcode修改二维码对中文的支持,主要包括Barcode修改二维码对中文的支持使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Barcode2011版本, 在UnicodeIDE环境下原本二维码处理中文时有问题, 只读取了第一个字节转换, 所以中文会出错
修改psCodeStudio.pas文件,TpsQRCode.EncodePart函数
function TpsQRCode.EncodePart(const ToEncode:String; currMode: TpsQRMode):String; var i, j, k: integer; s, s1: String; k1, k2: integer; c: Char; lBytes: TBytes; begin i := 1; s := GetModeIndicator(FMicroQR, currMode, FUsedVersion); if currMode = QrBytes then begin lBytes := TEncoding.UTF8.GetBytes(ToEncode); s := s + IntegerToBits(Length(lBytes), GetNumberOfBitsIndicatorSize(FMicroQR, currMode, FUsedVersion)); end else begin lBytes := nil; s := s + IntegerToBits(Length(ToEncode), GetNumberOfBitsIndicatorSize(FMicroQR, currMode, FUsedVersion)); end; case currMode of QrNumeric: while i <= Length(ToEncode) do begin s1 := Copy(ToEncode, i, 3); k := 0; for j := 1 to Length(s1) do k := 10 * k + Ord(s1[j]) - Ord0; case Length(s1) of 1: s := s + IntegerToBits(k, 4); 2: s := s + IntegerToBits(k, 7); 3: s := s + IntegerToBits(k, 10); end; Inc(i, 3); end; QrAlphanumeric: while i <= Length(ToEncode) do begin c := ToEncode[i]; if (FNC1 <> fnc1None) and (Char(c) = GS1_GroupSeparator) then c := '%'; k1 := System.Pos(c, QR_AlphaTable) - 1; if k1 = -1 then begin s := ''; Exit; end; Inc(i); if i <= Length(ToEncode) then begin c := ToEncode[i]; if (FNC1 <> fnc1None) and (Char(c) = GS1_GroupSeparator) then c := '%'; k2 := Pos(c, QR_AlphaTable) - 1; if k2 = -1 then begin s := ''; Exit; end; s := s + IntegerToBits(45 * k1 + k2, 11); end else s := s + IntegerToBits(k1, 6); Inc(i); end; QrBytes: begin for i := Low(lBytes) to High(lBytes) do s := s + IntegerToBits(lBytes[i], 8); end; QrKanji: ; end; result := s; end;
以下为修改完的文件
https://files.cnblogs.com/files/lzl_17948876/psCodeStudio.rar
原文地址:https://www.cnblogs.com/lzl_17948876/p/12144376.html
- 我差不多,哦不我已经是个废人了No.4
- 将Gradle项目发布到Jcenter和Maven Central
- FLAnimatedImage -ios gif图片加载框架介绍
- linux学习第八篇:文件或目录权限chmod,更改所有者和所属组chown,umask,隐藏权限lsattr_chattr
- linux学习第九篇:特殊权限set_uid,set_gid,stick_bit以及软连接文件,硬链接文件
- C#事件(event)的一个实例
- linux学习第十篇:find命令,文件名后缀
- linux学习第十一篇:linux和Windows互传文件,用户配置文件和密码配置文件,用户组管理以及用户管理
- linux学习第十二篇:usermod命令,用户密码管理,mkpasswd命令
- 一斤代码深入理解系列(三):微信小程序和服务器通信
- C#CreateGraphics方法的三种实现方式
- 一斤代码深入理解系列(四):微信小程序和服务器通信-WebSocket
- linux学习第十四篇:查看磁盘,文件大小命令:df,du;磁盘分区
- 二叉树的性质和常用操作代码集合
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 动态代理:cgib、jdk、java javassist
- JAVA NIO Channel
- JAVA NIO Scatter/Gather(矢量IO)
- JAVA NIO FileChannel 内存映射文件
- JAVA NIO Socket通道
- Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operat
- Spring 资源文件处理
- Spring profile配置应用
- Spring Bean的加载
- Spring ApplicationContext 简介
- Spring 配置String转Date
- zookeeper事务
- Thread Object wait() notify()基本
- 基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)
- Java加解密AES、DES、TripleDES、MD5、SHA