タイトル通りですが、
ファイルを読み込んだときに、(CStringクラスに格納したい)
その読み込んだファイルがシフトJISなのか、UNICODEなのかを
調べる方法はありますか?
BOMの有無程度が限界です。
BOM無しのファイルの判定は,ファイルを調べて,
各文字コードとして不正なバイト列が無い物,全てにあるなら少ない物,
というような感じで判定するしかないと思います。
#複数の文字コードとして扱えるなら……デフォルトを決定しておくしかないです。
例えば、Microsoft Internet Explorerのように、
読み込んだHTMLを文字コードを自動判別する
っていうようなことはどうやっているのでしょうか?
HTMLは、タグ中に使用するコードセットを記述する部分があると思いますけれど。
指定が無ければ、ブラウザ側のデフォルト設定が生きると思います。
実際、この辺の指定がないとページ全体が化ける事がありますし。
要は、IEでも化ける事があるという事は、自動判定には限界があるということです。
確実に行いたいのであれば、ファイルのフォーマットとしてコードの指定を
ヘッダ部の情報等で取り出せるようにする必要があると思います。
エディタ等で自動判定をするものもありますが、誤認識の可能性があることを
明示してあるのが普通だと思います。
やるなら、ファイル全体の文字を特定のコードであると仮定して文字コードに無い文字が
無いかどうかを判定して、もっともコードに無い文字が少ないコードで判定するしか
無いでしょう。この方法だとファイルが大きくなると使い物にならないくらい遅くなる
かもしれませんけれど。普通はファイルの先頭数バイトか数十バイトで判定していると
思いますが、同然、誤認識は避けられません。半角カナが絡むと難しい場合もあるでしょ
う。
> HTMLは、タグ中に使用するコードセットを記述する部分があると思いますけれど。
> 指定が無ければ、ブラウザ側のデフォルト設定が生きると思います。
確かにそうですね。わかります。
> 普通はファイルの先頭数バイトか数十バイトで判定していると思いますが、
> 同然、誤認識は避けられません。半角カナが絡むと難しい場合もあるでしょう。
ああ、面倒臭いです。
まぁ、なんとか頑張ってみます。
ありがとうございました。