Unicodeなテキストファイルを読む [戯言]
Unicode(UTF-16)で書かれたテキストファイルから、1行ずつ読み込んで、色々と処理をしようと思って、こんなコードを書いてみました。
std::wifstream in("unicode.txt"); std::wstring str; while (std::getline(in, str)) { strに対する処理 }
おもいっきり文字化けした。
そこで、「123」とだけ(Unicodeで)書いたテキストファイルを用意して、次のコードを実行してみた。
std::wifstream in("123.txt"); std::wstring str; std::getline(in, str); for (int i = 0; i < 4; i++) { printf("%04x ", str[i]); } printf("\n");
0031 0000 0032 0000
と出力された(リトルエンディアンBOMなしのUnicodeの場合)。
………
………
………
えっと、これは、あれですか?
ファイルから1byteずつ読み込んで、それ(1byte)を1文字として16bitに拡張し、wstring
に追加していると?
ファイルから2byteずつ読み込んで、それ(2byte)を1文字とするのではなくて?
なんだ、そりゃ~。
結局、Unicodeテキストファイルからデータを読むには、2byteずつ読んで、エンディアン変換して、wstring
に追加する処理を自前で書かなければいけないそうです。
今日の一冊 | |
|
タグ:C++
2009-08-16 07:52
nice!(0)
コメント(0)
トラックバック(0)
コメント 0