asataku (2091) の日記

2003 年 08 月 19 日
午後 09:51

QTextCodec::codecForContent()

QTextCodec::codecForContent()について

この関数、"Searches all installed QTextCodec objects, returning the one which most recognizes the given content."とあるように、与えられた文字列から、適切なCodecを得るための関数。
つまり、文字コードの自動認識を行なう関数です。

が、"Note that this is often a poor choice,"とあるように、はっきり云って使えない。その理由としては"since character encodings often use most of the available character sequences, and so only by linguistic analysis could a true match be made."とあるが、実際の理由は別のところにあります。
(上記は嘘ではないです。iso-8859-X系を考慮すると正しい理由でしょう。ただ、日本語を考慮すると上記の理由だけでは足りません)

QTextCodec::codecForContent()のアルゴリズムですが、
各codecのheuristicContentMatch()を呼び出し、その帰り値をスコアとして、
スコアがもっとも高かったcodecを適切なcodecとして選ぶというものです。

と、ここまで書いてqtのコードを確認していて、qeucjpcodec.cppやqjiscodec.cppではそれなりにheuristicContentMatch()が実装されてるのに気づく。
今までは、これが不十分だからだと思っていたが、他のcodecとの兼ね合いか。
それとも、いつのまにかそこそこまともに動作するようになっているのだろうか。

要確認かも。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

開いた括弧は必ず閉じる -- あるプログラマー

処理中...