2

我有一组似乎包含以 UTF-8 和 ISO-8859-1 编码的字符的文档。我希望它们只是 UTF-8 编码。

当我使用文档将其解码为 UTF-8时,doc.decode('utf-8')我最终会得到一些 unicode 转义序列,例如\u2022,但我也有很多\xa0我认为是 ISO-8859-1 的字符。我想将它们转换为它们的 unicode 等价物,以便一切都幸福地生活在一起。这可能吗?我正在使用 Python 2.74。

我做过的一件事是:

decoded_doc = doc.decode('utf-8')
new_doc = decoded_doc.replace(u'\xa0',u' ')

但还有其他奇怪的角色,比如\xb7——我想一口气把它们全部搞定。

4

2 回答 2

1

字符不是编码的专有属性,您不能说a是“UTF-8 字符”,而b在某种意义上和上下文中是“ASCII 字符”,这意味着没有其他编码能够表示这些字符。

如果您的文件无错误地解码为 UTF-8,则它是有效的 UTF-8。它不可能是“UTF-8 和 ISO-8859-1 的混合”。

于 2013-04-16T22:09:33.857 回答
0

作为对另一个问题的回答,您隐含地问:

如果您希望将与空格在视觉上无法区分的字符 U+00A0 以及许多其他此类转换一起转换为空格,这称为 NFKC 规范化。您可以通过以下方式完成它unicodedata.normalize

import unicodedata
new_doc = unicodedata.normalize('NFKC', decoded_doc)
于 2013-08-28T05:43:39.487 回答