Pythonで文字エンコーディングを検出する方法
Aspose.HTML FOSS for Python は、標準が定める方法で生バイトから文字エンコーディングを検出します。まずバイトオーダーマークを確認し、次にコンテンツ内の宣言をチェックします。このガイドでは、バイトストリームをスニッフし、エンコーディングラベルを正規化します。インストールには 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().
エキゾチックなエンコーディングはエラーを発生させます。 レジストリ外のエンコーディングは型付けされたエラーを発生させます UnsupportedEncodingError; 可能であればそれを処理し、上流で再エンコードしてください。
よくある質問
detect_encoding は何を返しますか?
検出された encoding を持つ EncodingDetectionResult、confidence レベル、そしてデコードされた text。
検出はメタタグを参照しますか?
はい — BOM が存在しない場合、標準の meta-prescan は prescan_meta_charset() を通じて参加します。
エンコーディングが分かれば手動でデコードできますか?
はい — decode_bytes() は選択したエンコーディングでデコードします。