Pythonで文字エンコーディングを検出する方法

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() は選択したエンコーディングでデコードします。

参照

 日本語