比较ISO88591和UTF8

2024-05-18 07:54:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含unicode字符串的文件:u"L'\xe9quipe le quotidien"

我有另一个文件,从Windows导出,编码为iso-8859-1,使用相同的字符串:"L'<E9>quipe le quotidien"(这是来自shell中{}的复制/粘贴)。在

decode('iso-8859-1').encode('utf8')转换Windows文件的内容会产生一个与Windows文件中的不同的字符串:L'équipe le quotidien。在

做这种比较的最好方法是什么?我似乎无法将拉丁1字符串转换为utf-8。在


Tags: 文件字符串le编码粘贴windowsunicodeiso
1条回答
网友
1楼 · 发布于 2024-05-18 07:54:45

您的文件未编码为拉丁语1(iso-8859-1)。您创建了一个Mojibake;如果解释为Unicode字符串,我必须将其编码回拉丁语1,然后解码为UTF-8:

>>> print u"L'équipe le quotidien.".encode('latin1').decode('utf8')
L'équipe le quotidien.

一般来说,在比较之前,您需要将两个文件解码为unicode对象。即使这样,您仍然可以遇到Combining Diacritical Marks的问题,其中字母é实际上用两个代码点U+0065 LATIN SMALL LETTER E和{a4}表示。在

您可以通过规范化文本来解决这个问题;从分解的或组合的字符串中选择一个,并将两个字符串标准化为相同的形式;使用^{} function。请参见Normalizing Unicode了解更多详细信息。在

相关问题 更多 >