A composite approach to language/encoding detection

A composite approach to language/encoding detection

[18] universalchardet は、文字の出現頻度の統計データを元にバイト列文字コードを判定する手法とその実装です。

目次

  1. 原典
  2. 実装
  3. 標準化
  4. HTML5 Charset 判定算法で失敗する例
  5. メモ

原典#

[32] 当時は正常に表示されていたはずなのに現在 >>31文字化けしています。なんという皮肉でしょうか。 現在 Content-Type:text/html; charset=UTF-8 とされていますが、実際には windows-1252符号化されているようです。

実装#

[17] 本家 MozillaC++ の実装の他、各言語への移植版が存在しています。

[20] 次に示すのは独立した実装ではなく、他の実装のラッパーとして機能するものです。

標準化#

[10] UNIVCHARDET 自体は1実装に過ぎず、何らかの標準でも、標準によって義務付けられた実装でもありませんが、 Web Applications 1.0文字符号化の決定算法の中で出現頻度分析に基づく推定の利用を認めており、 その具体例として >>1 を挙げています。

HTML5 Charset 判定算法で失敗する例#

[9] HTML documents misinterpreted by charset sniffer を参照してください。

メモ#

[25] >>24 は諸々改善されていることがドキュメントにあるが、近年の Webブラウザーの、 旧来文字コードを切り捨てていく方向に則ってるのが不安要素だなあ。

[28] >>27 は1バイト符号化の判定に大きな変更を加えている (従来未対応の文字コードへの対応を含む。) が、マージされずに長年放置されている。