修改python的amzqr库,使其支持中文编码

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注