如何阻止Google Chart API截断二维码内容末尾的换行符?
解决Google Chart API截断二维码末尾换行符的问题
我之前也踩过这个坑!Google Chart API确实会自动忽略内容末尾的空白字符(包括换行符%0D%0A),哪怕你加一堆换行也没用——它会直接把这些末尾的空白全部截断,导致生成的二维码内容不带换行。这里有几个实用的解决办法:
方法1:添加零宽度空格(最简便)
在末尾的换行符后面加一个零宽度空格(URL编码为%E2%80%8B),这个字符不会显示,也不会影响文本的实际使用,但能让Google Chart API认为内容还没结束,从而保留前面的换行符。
示例链接:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=qr_1a146dbd-c799-41c3-ad3d-ce50a5804e49%0D%0A%E2%80%8B&choe=UTF-8&chld=H
扫码后你会发现,末尾的换行符被完整保留,而零宽度空格几乎不会被察觉(大部分文本解析工具会忽略它,或者不会显示出来)。
方法2:换用本地/其他QR码生成工具
如果对内容的纯净度要求极高(不想加任何额外字符),可以放弃Google Chart API,改用本地生成工具,比如Python的qrcode库,或者ZXing的离线工具。
举个Python的例子:
import qrcode # 带末尾换行的内容 qr_content = "qr_1a146dbd-c799-41c3-ad3d-ce50a5804e49\r\n" # 生成二维码 qr_img = qrcode.make(qr_content) # 保存图片 qr_img.save("my_qr_with_newline.png")
这种方式完全由你控制内容,不会有任何自动截断的问题。
方法3:添加可见空白字符(不推荐)
如果实在不想换工具,也可以在换行后加一个普通空格(URL编码%20),但这样扫码后内容末尾会多一个空格,需要后续处理去掉。这个方法不如零宽度空格优雅,只适合对内容格式要求不严格的场景。
内容的提问来源于stack exchange,提问作者KoSMoS




