CStdioFile ReadString – プログラミング – Home

通知
すべてクリア

[解決済] CStdioFile ReadString


mojibake
 mojibake
(@mojibake)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

開発環境 vs2008

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

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

CStdioFile cFile;
CString cStr;

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

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

です。

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


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 14年前
投稿: 40
 

- path.txt のencodingは何ですか? Shift_jis? UTF-8? UTF-16? ほかのなにか?
- ビルド環境をマルチバイト文字列にしていますか?
- 文字化けしていることをどうやって確認しましたか?


返信引用
mojibake
 mojibake
(@mojibake)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

>- path.txt のencodingは何ですか? Shift_jis? UTF-8? UTF-16? ほかのなにか?

UTF-8 です。

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

しています。

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

TRACE(%s, cStr); です。

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 14年前
投稿: 40
 

無理です。マルチバイト環境では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
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

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


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

なるほど、いいですねぇ。

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


返信引用
mojibake
 mojibake
(@mojibake)
ゲスト
結合: 14年前
投稿: 3
Topic starter  

皆様 ありがとうございました。

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

ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました