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

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第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?