帮助修复编码(特别是元音变调)

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,则最好编写一个错误报告。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java播放流媒体音乐   LWJGL中的java纹理未显示   java从父集合中删除时删除子对象   mysql希望在我的代码中添加验证,如果表不存在,它应该用java创建新表   java我可以关闭客户端的socket而不引起服务器端的EOFEException吗?   java Primefaces对话框框架咆哮和showMessageInDialog不工作   hadoop配置单元无法初始化类java。网网络接口   关键字中缺少oracle11g Java iBatis   java在RESTAPI中创建PUT和POST端点,而不创建GET端点?   java Math abs和ceil输出编译错误   java Tomcat 8.017代md5及其摘要。球棒   java SpringBean配置xml文件在IteliJ Idea中加载   java为什么在使用Powershell指定Xms和Xmx时,它们什么都不做,但通过Netbeans IDE可以正常工作?   java Drools项目构建失败,kjar打包从7.7版开始