17時03分00秒 [ソフト開発]
文字コードの判定について。
判定したい対象のテキストファイルを読み込んで、
を、まず出す。MLは、とりあえず2048固定。(=2KB)
んで、エラー(その文字コードで絶対出現しないはずのコードが出現した数)の判定基準を次の通りとする。
+10とか+1というのは、判定に使用する長さが非常に短いテキストが対象になった場合の対策。10とか1とかの値に根拠はないんだけど。
で、上記の数値を使って、文字コードを判別するための条件を以下のようにしました。
◆BEのエラー多すぎ and BSのエラー多すぎ → バイナリ
◆BEのエラー数 > BSのエラー数 → SHIFT-JIS
◆BEのエラー数 < BSのエラー数 → EUC
◆BEのエラーなし and BSのエラーなし → ASCII
◆BEのエラー数 = BSのエラー数 → Unknown (or JIS)
判別したいコードが SHIFT-JIS と EUC だけの場合、これで充分なんですが、ここで、UTF-8 が出てくると難しくなります。
んで、以下の条件を加えます。
◆(BEのエラー数が全体の3%を超えている) and (BSのエラー数が全体の1.5%を超えている) and (BEのエラー数 > BSのエラー数) → UTF-8
私の実験環境で用意した150個のファイルでは、この条件でうまく判別できたんですが…。
果たしてこの条件でどんなファイルでも正しく判別できるのかどうか…。(^^;;;
むむう。
文字コードの判別って難しいねえ…。
UTF-8ファイルの先頭に、必ずBOM(Byte Order Mark)が付加されてれば、間違いなく判別できるんだけどなあ。
なんかもっといい判別方法ないでしょうか。^^;
この日記へのコメントはお気軽に! コメント数:0件
コメント数: 0件