CStdioFile ReadString

[戻る]
mojibake 2010/12/23(木) 17:37:07
開発環境 vs2008

CStdioFile ReadString で読み込むと日本語の部分が文字化けします。

いろいろ探してみると、ビルド環境をマルチバイト文字列にする
とか、setlocale(LC_ALL,"jpn"); を使用するとありますが、文字化けします。

CStdioFile cFile;
CString    cStr;

cFile.Open("path.txt",CFile::modeRead);

cFile.ReadString(cStr);    <---  日本語部分が文字化け

です。

アドバイスお願いたします。

επιστημη [E-Mail] [HomePage] 2010/12/23(木) 18:07:52
- path.txt のencodingは何ですか? Shift_jis? UTF-8? UTF-16? ほかのなにか?
- ビルド環境をマルチバイト文字列にしていますか?
- 文字化けしていることをどうやって確認しましたか?

mojibake 2010/12/23(木) 18:36:55
>- path.txt のencodingは何ですか? Shift_jis? UTF-8? UTF-16? ほかのなにか?

UTF-8 です。

>- ビルド環境をマルチバイト文字列にしていますか?

しています。

>- 文字化けしていることをどうやって確認しましたか?

TRACE("%s", cStr); です。

よろしくお願いいたします。

επιστημη [E-Mail] [HomePage] 2010/12/23(木) 18:57:09
無理です。マルチバイト環境ではShift_JISとみなされます。
ReadStringののち、UTF-8→Shift_JIS変換を施さなくてはなりません。
# BOM付きUTF-8だったらアタマの3文字を捨てる処理も必要です。

ここらへん↓参照。
http://code.msdn.microsoft.com/UTF8Helpers
http://blogs.wankuma.com/episteme/archive/2010/12/18/195853.aspx

Blue 2010/12/24(金) 08:43:40
fopenを使うとか。
http://msdn.microsoft.com/ja-jp/library/z5hh6ee9%28v=vs.80%29.aspx
>encoding に指定できる値には、UNICODE、UTF-8、および UTF-16LE があります。

bun 2010/12/24(金) 09:54:15
なるほど、いいですねぇ。

http://d.hatena.ne.jp/faith_and_brave/20080724

mojibake 2010/12/27(月) 08:33:09
[[解決]]
皆様 ありがとうございました。

UTF8 -> SJIS変換を行うこととしました。

ありがとうございます。

古いスレッドには追加発言できません。