VB2005で漢字を表示する時の留意点
WINDOWS(VB2005)の内部コードは、UTF-16のBOM無しリトルエンディアンです(参照)。
テキストファイルのコードは、以下の3つが主流です。
上記の3つのコードは、制御コードと英数字は、同じ値のコードです。
違うのは、基本的に漢字の部分のコードなのです。
たとえば、ファイルを読み込んでWINDOWSで表示するには、この3つのコードからUTF-16に変換してあげないとなりません。
その時に、テキストファイルのコードと違うコードでUTF-16に変換すると当然、漢字は化けますね。
しかし、実は漢字コードの部分だけでなく、英数字コードや制御コード(改行コード等)の部分も化けてしまうのです。
これは、UTF-16ではサロゲートペアがあり、それにたまたまマッチしてしまう場合に、バイト数がずれて、英数字や制御コード(改行コード等)が化けるとか。
また、UTF-8では3バイトで漢字を表しますが、これを2バイト漢字コードのEUC指定やSJIS指定でUTF-16に変換すると、バイト数がずれてしまう場合などなど…。