コンテンツへスキップ
uencoder

テキストのエンコーディングを検出する方法

エンコーディングが宣言されていないとき、ファイルやバイトストリームの文字エンコーディングを特定します。

问题

charset 宣言のないファイルを受け取りました。処理する前に、UTF-8、Latin-1、その他のどれであるかを判断する必要があります。

前提条件

  • 文字集合の理解
  • バイト列への習熟

ステップ

  1. 1. Check for a BOM

    Read the first few bytes. A UTF-8 BOM is EF BB BF, UTF-16 LE is FF FE, and UTF-16 BE is FE FF. If a BOM is present, the encoding is unambiguous. Many tools strip the BOM after detection.

    入力
    EF BB BF 23 20
    输出
    UTF-8 with BOM
  2. 2. Validate against UTF-8

    UTF-8 has strict byte patterns: continuation bytes start with 10xxxxxx, and lead bytes follow specific ranges. If the stream passes UTF-8 validation without errors, it is very likely UTF-8. If it fails, try Windows-1252 or ISO-8859-1.

    入力
    48 65 6C 6C 6F
    输出
    valid UTF-8 (ASCII subset)
  3. 3. Use statistical detection as fallback

    When no BOM exists and UTF-8 validation fails, use a statistical detector that analyses byte frequency and n-gram patterns to guess the most likely encoding. Always treat the result as a guess and let the user confirm.

    入力
    mixed bytes
    输出
    probable: Windows-1252 (confidence 87%)

期待される結果

信頼度付きの最有力エンコーディング判定ラベル。BOM や厳密な検証が成功した場合は確定的な結果。

よくあるエラー

Trusting statistical detection blindly
Statistical detection can be wrong. Always provide a way for the user to override the detected encoding.
Ignoring the BOM
Always check for a BOM first. It is the only definitive indicator and should be stripped after detection.

トラブルシューティング指引

  • If UTF-8 validation fails on a file that should be UTF-8, check for mixed encodings or corruption.
  • Windows-1252 is a superset of ISO-8859-1 and is the more likely fallback for Western text.

セキュリティ上の制限

  • Encoding detection can be fooled by crafted byte sequences. Do not make security decisions based solely on detected encoding.

関連ツール

参考链接