在 Python 中将非标准字符解码为 UTF 8

黑客

我有一个程序,它通过 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章