在将字符串编码/解码为特定字符集(UTF-8)时,我遇到了一些实际问题。在
我的Unicode对象是:
>> u'Valor Econ\xf4mico - Opini\xe3o'
当我从python调用print时,它返回:
^{pr2}$当我从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')
Valor Econ\xc3\xb4mico - Opini\xc3\xa3o
是为非UTF-8终端准备的UTF-8表示,可能是在交互式shell中。如果您要将此文件写入文件(open("myfile", "wb").write("Valor Econ\xc3\xb4mico - Opini\xc3\xa3o"
),那么您将拥有一个有效的UTF-8文件。在要从文件创建Unicode字符串,可以在io模块中使用自动解码(
Codecs.open()
不推荐使用)。BOM表将自动删除:在创建JSON响应时,使用来自
json.dumps(my_object)
的结果。它将返回一个str,其中包含使用Unicode码位编码的所有非ASCII字符。在相关问题 更多 >
编程相关推荐