帮助修复编码(特别是元音变调)
encoding_repair的Python项目详细描述
令人震惊的是,当
通过不同的编码转换时,像元音变调这样的特殊字符常常会中断。(您可能想查看一下
德国亚马逊市场。)
在目标编码中,损坏的umlaut仍然有效,因此只能通过启发式(magic)进行检测。
0.5版:支持完整变更集的utf-8和latin1
,看看bitbucket.org/niels_mfo/encoding_repair
(那里也接受错误报告)
打断特殊字符的常见情况如下:
-输入字符串用utf-8编码(使用多字节字符)
-它被解释为有效的latin1字符串
-latin1具有有效的表示形式对于几乎所有的字节
-latin1使用单字节字符
-现在多字节字符的两个字节都被解释为字符
-特殊字符分成两个不同的字符(有效!)字符
此方案有许多陷阱:
-字符被不可逆转地断开。
-…不管您对字符串做什么。
-您可以通过所有编码转换它,并且元音变音符不会回来。
-只有通过一些试探性的替换,此模块才能帮助您。
此模块假定,一些特殊字符总是正确的。它们存储在“元音变音符”列表中。此外,该模块假设它们的
表示(在另一种编码中是正确的)总是在
目标编码中被破坏。
注意:
这种情况只会发生,因为人们不使用Unicode。如果每个人都使用unicode字符串,我就不必编写这个模块了。
正确处理编码的最好的也是唯一的方法是:
-一个输入字符串进入您的程序。
-如果是unicode,跳到第6点。
-如果不是,您可能已经需要修复umlauts。
-您需要确保您知道输入字符串的正确编码,因为很难猜测。
-将其转换为Unicode。
-在整个程序中使用Unicode字符串。
-如果可以返回Unicode,则返回Unicode。
-如果有疑问,返回unicode。
-如果您真的需要返回任何其他内容,则返回utf-8。
-如果您确定,将接收您的输出的程序无法处理unicode或utf-8,则最好编写一个错误报告。
通过不同的编码转换时,像元音变调这样的特殊字符常常会中断。(您可能想查看一下
德国亚马逊市场。)
在目标编码中,损坏的umlaut仍然有效,因此只能通过启发式(magic)进行检测。
0.5版:支持完整变更集的utf-8和latin1
,看看bitbucket.org/niels_mfo/encoding_repair
(那里也接受错误报告)
打断特殊字符的常见情况如下:
-输入字符串用utf-8编码(使用多字节字符)
-它被解释为有效的latin1字符串
-latin1具有有效的表示形式对于几乎所有的字节
-latin1使用单字节字符
-现在多字节字符的两个字节都被解释为字符
-特殊字符分成两个不同的字符(有效!)字符
此方案有许多陷阱:
-字符被不可逆转地断开。
-…不管您对字符串做什么。
-您可以通过所有编码转换它,并且元音变音符不会回来。
-只有通过一些试探性的替换,此模块才能帮助您。
此模块假定,一些特殊字符总是正确的。它们存储在“元音变音符”列表中。此外,该模块假设它们的
表示(在另一种编码中是正确的)总是在
目标编码中被破坏。
注意:
这种情况只会发生,因为人们不使用Unicode。如果每个人都使用unicode字符串,我就不必编写这个模块了。
正确处理编码的最好的也是唯一的方法是:
-一个输入字符串进入您的程序。
-如果是unicode,跳到第6点。
-如果不是,您可能已经需要修复umlauts。
-您需要确保您知道输入字符串的正确编码,因为很难猜测。
-将其转换为Unicode。
-在整个程序中使用Unicode字符串。
-如果可以返回Unicode,则返回Unicode。
-如果有疑问,返回unicode。
-如果您真的需要返回任何其他内容,则返回utf-8。
-如果您确定,将接收您的输出的程序无法处理unicode或utf-8,则最好编写一个错误报告。