如何检测 Python 中的字符编码
Aspose.HTML 针对 Python 的 FOSS 按照标准规定检测原始字节中的字符编码:首先检测字节顺序标记(BOM),然后检测内容内部的声明。本指南会嗅探字节流并标准化编码标签,使用 pip 进行安装。
分步指南
步骤 1:安装软件包
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .步骤 2:导入所需函数
from aspose_html.encoding.detection import detect_encoding步骤 3:检测字节流的编码
检测到一个 UTF-8 BOM,具有一定的置信度,并且已从解码后的文本中剥离 BOM 字节:
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)步骤 4:标准化编码标签
旧标签映射到规范名称——根据编码标准,latin1、iso-8859-1 和 us-ascii 都是 windows-1252。在比较之前,使用同一模块系列的 get_canonical_name() 来标准化标签。
常见问题及解决方案
在我的解码文本中出现了 BOM。 手动解码时会出现这种情况; detect_encoding() 从中剥离 BOM 字节 result.text.
对等标签的编码比较会失败。 比较规范名称,而不是原始标签——使用 … 对双方进行规范化 get_canonical_name().
奇特的编码会引发错误。 注册表之外的编码会引发 typed UnsupportedEncodingError; 如有可能,请处理它并在上游重新编码。
常见问题
detect_encoding 返回什么?
一个 EncodingDetectionResult,检测到的 encoding、confidence 级别,以及已解码的 text。
检测会查看 meta 标签吗?
是的 — 标准的 meta-prescan 在没有 BOM 时通过 prescan_meta_charset() 参与。
一旦我知道编码,我可以手动解码吗?
是的 — decode_bytes() 使用所选编码进行解码。