我有字典字典,其中包含utf8编码密钥。我正在使用json
模块将此字典转储到文件中
在文件中键以utf8格式打印。键实际上是孟加拉语的字母。
我希望在文件中写入实际的字母。 怎么做?
如果我打印出这些键(其中一个是你'),那么会显示控制台实际字母(ং),但是在我的文件中\u0982
。打印用什么来显示实际的字母?
答案 0 :(得分:2)
你正在写JSON; JSON标准允许\uxxxx
转义序列编码非ASCII字符。 Python json
模块默认使用它。
转储数据时使用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的程序打开文件时,你的代码点应该再次显示为相同的字符。
答案 1 :(得分:2)
使用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序列进行转义,结果为str 实例仅由ASCII字符组成。如果ensure_ascii是 错误,写入fp的一些块可能是unicode实例。 ...