Unicode参数预期为PYQRCODE

时间:2016-03-26 09:01:44

标签: python-2.7 svg unicode

使用以下内容,应生成内存映像:

url = pyqrcode.create(user.get_totp_uri())
stream = StringIO()
url.svg(stream, scale=3)
return stream.getvalue().encode('utf-8'), 200, {
    'Content-Type': 'image/svg+xml',
    'Cache-Control': 'no-cache, no-store, must-revalidate',
    'Pragma': 'no-cache',
    'Expires': '0'}

我收到以下错误:

File "E:\Data\pathsdb\flask\lib\site-packages\pyqrcode\builder.py", line 1118, in _svg
write_bytes(b'<?xml version="1.0" encoding="UTF-8"?>\n')
TypeError: unicode argument expected, got 'str'

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

解决:

使用以下代码:

url = pyqrcode.create(user.get_totp_uri())
stream = BytesIO()
url.svg(stream, scale=3)
return stream.getvalue(), 200, {
    'Content-Type': 'image/svg+xml',
    'Cache-Control': 'no-cache, no-store, must-revalidate',
    'Pragma': 'no-cache',
    'Expires': '0'}

应该使用BytesIO并删除编码。