【发布时间】:2014-03-08 18:15:53
【问题描述】:
我有一个复杂的 JSON 可序列化数据结构,其中包含 unicode 字符串和 utf-8 字节字符串。
当我尝试使用ensure_ascii=False 序列化结构时,它失败了:
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
[GCC 4.8.1] on linux2
>>> import json
>>> json.dumps(['\xd0\xb2', u'\xd0\xb2'], ensure_ascii=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 250, in dumps
sort_keys=sort_keys, **kw).encode(obj)
File "/usr/lib/python2.7/json/encoder.py", line 210, in encode
return ''.join(chunks)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 1: ordinal not in range(128)
>>>
我明白为什么this happens,但有没有更简单或内置的方法可以让它工作,而不是递归地遍历数据结构、查找字节字符串并将它们解码为 unicode?p>
【问题讨论】:
-
为什么首先将字节串添加到结构中?
-
我无法控制它。这是一本由 API 用户更新的字典。我想让它万无一失。
-
这个建议很有帮助:nedbatchelder.com/text/unipain.html
-
是的,我知道这一切。在理想世界中,这已经足够了。有时你只需要让它发挥作用。
标签: python json unicode python-unicode