我有字典字典,其中包含 utf8 编码的键。我正在使用json
模块将此字典转储到文件中。
在文件中,密钥以 utf8 格式打印。钥匙实际上是孟加拉语的字母。
我希望将实际字母写在文件中。这个怎么做 ??
如果我打印这些键(其中一个是 u'\u0982')到控制台,实际的字母(ং)会显示,但在我的文件中是 .is\u0982
写的。print 做什么来显示实际的字母?
我有字典字典,其中包含 utf8 编码的键。我正在使用json
模块将此字典转储到文件中。
在文件中,密钥以 utf8 格式打印。钥匙实际上是孟加拉语的字母。
我希望将实际字母写在文件中。这个怎么做 ??
如果我打印这些键(其中一个是 u'\u0982')到控制台,实际的字母(ং)会显示,但在我的文件中是 .is\u0982
写的。print 做什么来显示实际的字母?
您正在编写 JSON;JSON 标准允许\uxxxx
转义序列对非 ASCII 字符进行编码。Pythonjson
模块默认使用它。
ensure_ascii=False
转储数据时使用开关关闭该功能:
json.dump(obj, yourfileobject, ensure_ascii=False)
这确实意味着输出也不再编码为 UTF-8 字节;您需要为此使用codecs.open()
托管文件:
import json
import codecs
with codecs.open('/path/to/file', 'w', encoding='utf8') as output:
json.dump(obj, output, ensure_ascii=False)
现在,您的 unicode 字符将作为 UTF-8 编码字节写入文件。当使用另一个再次解码UTF-8的程序打开文件时,您的代码点应再次显示为相同的字符。
使用ensure_ascii
参数。
>>> import json
>>> print json.dumps(u'\u0982')
"\u0982"
>>> print json.dumps(u'\u0982', ensure_ascii=False)
"ং"
http://docs.python.org/2/library/json.html#json.dump
如果 ensure_ascii 为 True(默认值),则输出中的所有非 ASCII 字符都使用 \uXXXX 序列进行转义,结果是仅由 ASCII 字符组成的 str 实例。如果 ensure_ascii 为 False,则写入 fp 的某些块可能是 unicode 实例。...