amzqr是一个非常方便的文字信息生成二维码的python库,美中不足是原作者代码不支持中文。根据github上提交的pr,记录一下支持中文的修改方法。
1. 修改amzqr.py
#if not isinstance(words, str) or any(i not in supported_chars for i in words):
#不对中文字符进行检测
if not isinstance(words, str):
2.修改mylibs/data.py,共两处
第一处
def byte_encoding(str):
str = bytes(str, encoding="utf-8") #增加,统一编码为utf-8
code = ''
for i in str:
#c = bin(ord(i.encode('iso-8859-1')))[2:]
c= bin(i)[2:]
...
第二处
def get_cci(ver, mode, str):
if 1 <= ver <= 9:
cci_len = (10, 9, 8, 8)[mindex[mode]]
elif 10 <= ver <= 26:
cci_len = (12, 11, 16, 10)[mindex[mode]]
else:
cci_len = (14, 13, 16, 12)[mindex[mode]]
#cci = bin(len(str))[2:]
cci = bin(len(bytes(str,encoding="utf-8")))[2:]
cci = '0' * (cci_len - len(cci)) + cci
return cci
修改完成后,进行测试,一切正常。使用中,加上-l L的参数,否则生成的二维码有时无法识别。
PS E:\> amzqr -l L -c -p .\soilder_logo.jpg '你好世界 from vxer.cn'
line 16: mode: byte
Succeed!
Check out your 2-L QR-code: E:\soilder_logo_qrcode.png