我有一个应该被解释为UTF-8,但没有(这是给我这样的)文本的文本文件。 下面是该文件的一个典型的行的一个示例:
\ U30ed \ u30f3 \ u30c9 \ u30f3 \ u5728 \ u4f4f
这应该是:
生活和工作在伦敦
现在,我可以通过键入命令行下面的手动执行它的Python:
>>> h1 = u'\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'
>>> print h1
ロンドン在住
这给我我想要的。 有没有一种方法,我可以自动做到这一点? 我试着做这样的东西
>>> f = codecs.open('testfile.txt', encoding='utf-8')
>>> h = f.next()
>>> print h
\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f
我也试图与“编码”和“解码”功能,任何想法?
谢谢!
\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f
不是UTF8; 它使用Python的Unicode转义格式。 使用unicode_escape
编解码器来代替:
>>> print '\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'.decode('unicode_escape')
ロンドン在住
下面是上述短语,用于比较的UTF-8编码:
>>> '\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'.decode('unicode_escape').encode('utf-8')
'\xe3\x83\xad\xe3\x83\xb3\xe3\x83\x89\xe3\x83\xb3\xe5\x9c\xa8\xe4\xbd\x8f'
请注意,数据解码的unicode_escape
作为Latin-1的任何东西,这不是一个公认的Python的转义序列治疗。
不过要小心; 它可能是你真的希望在JSON编码的数据 ,它使用相同的符号指定字符转义。 使用json.loads()
来解码实际JSON数据; 与这样的逃逸JSON字符串是界定与"
报价和通常更大的结构(诸如JSON列表或对象)的一部分。