【发布时间】:2015-10-14 07:16:01
【问题描述】:
Python (2.x) 内置 json 库支持对 unicode 和 utf-8 编码(非 ASCII)字符串进行编码 - 但显然不能同时编码。试试:
import json; json.dumps([u'Ä', u'Ä'.encode("utf-8")], ensure_ascii=False)
并看到它引发 UnicodeDecodeError。而两者:
json.dumps([u'Ä'], ensure_ascii=False)
和
json.dumps([u'Ä'.encode("utf-8")], ensure_ascii=False)
...工作正常。
为什么使用 unicode 和 utf-8 编码(非 ASCII)字符串对数据进行 JSON 编码会产生 UnicodeDecodeError?我的 Python 网站编码是 ASCII。
【问题讨论】:
-
顺便说一句,至少 ujson 处理这种情况就好了。
-
json.dumps(['Ä'.encode("utf-8")], ensure_ascii=False)无法正常工作。 -
哪个 Python 版本?我认为你应该使用
u'Ä'.encode("utf-8")(注意你!) -
@Petri:你也应该在另一行修复它。
-
“UTF-8 编码”不是字符串。它只是一个字节序列。
标签: python json unicode encoding utf-8