我有一个程序,它通过 Django 中的 webhook(用 Python 编写)接收字节编码的文本。我从字节解码 -> utf-8 为普通字母工作,但是当发送一个撇号( ' )时它会中断。我写了这个来解码文本:
encoded = request.body
decoded = parse_qs(encoded)
body = decoded[b'body'][0].decode("utf-8")
这是错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 5: ordinal not in range(128)
我希望它成功解码撇号。我还担心如果发送表情符号它可能会中断,所以我希望能够转义表情符号和随机字符,如 ∫,但仍保留消息中的真实单词。
parse_qs
将使用解码的 utf 字符串,但会在非 ascii 字节上阻塞。例如:
这失败了:
a = b'restaurant_type=caf\xc3\xa9'
urllib.parse.parse_qs(a)
# > UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3...etc
但这工作正常:
a = b'restaurant_type=caf\xc3\xa9'
urllib.parse.parse_qs(a.decode())
# > {'restaurant_type': ['café']}
这就是你要问的吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句