当你这样做时,json.dumps([u"čeština", u"maďarština", u"francouština"])
你会得到字符串'["\\u010de\u0161tina", "ma\\u010far\u0161tina", "francou\\u0161tina"]'
(使用有效的 Python 字符串文字形式)。转义是 Unicode 在 JSON 中的\u
表示方式,默认情况下 Python 的 JSON 模块会将所有非 ascii 字符转换为 Unicode 转义。您可以通过ensure_ascii=False
在json.dumps()
参数中使用来禁用此行为。
这里有几个例子,首先是默认行为:
>>> json.dumps(lst)
'["\\u010de\\u0161tina", "ma\\u010far\\u0161tina", "francou\\u0161tina"]'
>>> print json.dumps(lst)
["\u010de\u0161tina", "ma\u010far\u0161tina", "francou\u0161tina"]
并与ensure_ascii=False
:
>>> json.dumps(lst, ensure_ascii=False)
u'["\u010de\u0161tina", "ma\u010far\u0161tina", "francou\u0161tina"]'
>>> print json.dumps(lst, ensure_ascii=False)
["čeština", "maďarština", "francouština"]
现在要确保您使用 utf-8 编写此 Unicode 字符串,您可以使用codecs模块:
import codecs, json
lst = [u"čeština", u"maďarština", u"francouština"]
json.dump(lst, codecs.open('file.txt', 'w', 'utf-8'), ensure_ascii=False)
请注意,我还使用json.dump()
了 which 直接写入文件而不是json.dumps()
.