我有一个包含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。在
您的文件未编码为拉丁语1(iso-8859-1)。您创建了一个Mojibake;如果解释为Unicode字符串,我必须将其编码回拉丁语1,然后解码为UTF-8:
一般来说,在比较之前,您需要将两个文件解码为
unicode
对象。即使这样,您仍然可以遇到Combining Diacritical Marks的问题,其中字母é
实际上用两个代码点U+0065 LATIN SMALL LETTER E和{a4}表示。在您可以通过规范化文本来解决这个问题;从分解的或组合的字符串中选择一个,并将两个字符串标准化为相同的形式;使用^{} function 。请参见Normalizing Unicode了解更多详细信息。在
相关问题 更多 >
编程相关推荐