关于文本文件中的“编码检测”,存在一个非常古老的问题 ,该问题已被Chardet之类的程序部分解决。
如今,人们可能会争辩说这个问题实际上不是一个问题。 确实,
像HTTP规范一样,大多数标准都提供了一种声明编码的方法。
但是实际情况有所不同,互联网的很大一部分仍然具有未知编码的内容。 例如,可以指出字幕字幕(SRT)。
这就是为什么像Requests这样的流行软件包将Chardet列为猜测远程资源上明显编码的要求的原因。
但是有一个问题! 首先,像Chardet这样的库是不可靠的,
没有维护,有时甚至被所有者公开不喜欢。
几乎所有流行的库都使用相同的想法,它们想要检测的每个代码页或编码都会创建一个特定的探针。 他们是
尝试识别原始编码。
我不喜欢的第一件事是每个编码使用单个探测器的想法
可能导致硬编码规范的表格。 其次,我是
确信我们不应该在乎原始编码,
因为两个不同的表可以产生两个相同的文件。
这是我带来另一种选择的地方。 疯狂的一件事:使用蛮力从给定的内容中获得感觉。 对于每种编码都有。
- 排除根本不适合内容的编码
- 打开后测量可观察到的混乱,确定“ жГЪСЭЯн”之类的东西
- 通过字母出现频率测量连贯性
通过不按编码创建特定的探针,我能够提供
检测大约90种编码! 相较于两倍
Chardet实际上更可靠。
因此,我向您介绍Charset Normalizer 。 真正的第一个通用字符集检测器。 或者,如果当前很忙还是什么,请通过https://charsetnormalizerweb.ousret.now.sh/在线进行尝试
From: https://hackernoon.com/how-i-used-python-to-solve-declareless-encoding-madness-hk1k42d3o