在python中将"plain text"解释为utf-8文本



我有一个文本文件,其中包含的文本应该被解释为 utf-8 但没有(它是以这种方式给我的)。下面是文件的典型行的示例:

\u30ed\u30f3\

u30c9\u30f3\u5728\u4f4f

应该是:

ロンドン在住

现在,我可以通过在命令行中键入以下内容在python上手动执行此操作:

>>> h1 = u'u30edu30f3u30c9u30f3u5728u4f4f'    
>>> print h1
ロンドン在住

这给了我想要的。有没有办法自动执行此操作?我试过做这样的事情

>>> f = codecs.open('testfile.txt', encoding='utf-8')
>>> h = f.next()
>>> print h
u30edu30f3u30c9u30f3u5728u4f4f

我也尝试过"编码"和"解码"功能,有什么想法吗?

谢谢!

u30edu30f3u30c9u30f3u5728u4f4f不是UTF8;它使用的是python Unicode转义格式。请改用unicode_escape编解码器:

>>> print 'u30edu30f3u30c9u30f3u5728u4f4f'.decode('unicode_escape')
ロンドン在住

以下是上述短语的 UTF-8 编码,用于比较:

>>> 'u30edu30f3u30c9u30f3u5728u4f4f'.decode('unicode_escape').encode('utf-8')
'xe3x83xadxe3x83xb3xe3x83x89xe3x83xb3xe5x9cxa8xe4xbdx8f'

请注意,对于任何不是可识别的 Python 转义序列的数据,使用 unicode_escape 解码的数据都被视为拉丁语-1。

但是要小心;可能您真的在查看 JSON 编码的数据,它使用相同的表示法来指定字符转义。使用json.loads()解码实际的 JSON 数据;具有此类转义的 JSON 字符串用"引号分隔,通常是较大结构(如 JSON 列表或对象)的一部分。

最新更新