【发布时间】:2015-10-19 12:04:41
【问题描述】:
我在将字符串编码/解码为特定字符集 (UTF-8) 时遇到了一些实际问题。
我的 Unicode 对象是:
>> u'Valor Econ\xf4mico - Opini\xe3o'
当我从 python 调用 print 时,它返回:
>> Valor Econômico - Opinião
当我从我的 unicode 对象调用 .encode("utf-8") 以将其写入 JSON 时,它会返回:
>> 'Valor Econ\xc3\xb4mico - Opini\xc3\xa3o'
我做错了什么? print() 到底在做什么而我却没有?
Obs:我正在从文件的一行创建这个 unicode 对象。
import codecs
with codecs.open(path, 'r') as local_file:
for line in local_file:
obj = unicode((line.replace(codecs.BOM_UTF8, '')).replace('\n', ''), 'utf-8')
【问题讨论】:
-
为什么需要编码才能写入json?
-
json模块已经自动支持unicode
-
使用标准的 json 模块,调用 json.dumps(your_string) 就可以了。将解码此 JSON 的应用程序是否兼容 UTF-8?
-
这只是
repr的输出,当你print 'Valor Econ\xc3\xb4mico - Opini\xc3\xa3o'.encode("utf-8")时,它将是Valor Econômico - Opinião -
一般情况下,当通过 Internet 发送 JSON 时,它会被转换为带有 unicode 字符的 ascii 字符,并使用 \uXXXX 进行转义以实现兼容性。转储
json.dumps(text,ensure_ascii=False)中有一个选项,但这可能不是您想要在这里做的。为什么文件中的文本需要是JSON?
标签: python utf-8 python-unicode