小编典典

如何确定文本的编码?

all

我收到了一些经过编码的文本,但我不知道使用了什么字符集。有没有办法使用 Python
确定文本文件的编码?如何检测处理 C# 的文本文件的编码/代码页。


阅读 85

收藏
2022-05-07

共1个答案

小编典典

编辑:chardet 似乎无人管理,但大多数答案都适用。检查https://pypi.org/project/charset-
normalizer/以获取替代方案

始终正确检测编码是 不可能 的。

(来自chardet常见问题解答:)

但是,某些编码针对特定语言进行了优化,并且语言不是随机的。一些字符序列一直弹出,而其他序列则毫无意义。一个英语流利的人打开报纸发现“沨xzqJv
2!dasd0a
QqdKjvz”会立即认出那不是英语(尽管它完全由英文字母组成)。通过研究大量“典型”文本,计算机算法可以模拟这种流畅度,并对文本的语言做出有根据的猜测。

有使用该研究来尝试检测编码的chardet库。chardet 是
Mozilla 中自动检测代码的一个端口。

您也可以使用UnicodeDammit。它将尝试以下方法:

  • 在文档本身中发现的编码:例如,在 XML 声明或(对于 HTML 文档)http-equiv META 标记中。如果 Beautiful Soup 在文档中发现这种编码,它会从头开始重新解析文档并尝试新的编码。唯一的例外是,如果您明确指定了编码,并且该编码确实有效:那么它将忽略它在文档中找到的任何编码。
  • 通过查看文件的前几个字节来嗅探的编码。如果在此阶段检测到编码,它将是 UTF-* 编码、EBCDIC 或 ASCII 之一。
  • chardet库嗅探到的编码,如果您安装了它。
  • UTF-8
  • Windows-1252
2022-05-07