- 締切済み
VC++2010の文字セット
VisualStudio2010の文字セットに関して質問があります。 VisualStudio2010でC++でコンソールアプリのプロジェクトを作ります。 このプロジェクトの文字セットは、プロジェクトのプロパティから見ると デフォルトでUNICODEになっています。 そこでUTF-8のテキストファイルを作成した後に以下のプログラム をデバッガで実行したのですが、szLineの全角文字列が化けて読めません。 (szLineにはUNICODEが入っているのだからウォッチで正常に参照できると思いました) fp = fopen("file.txt", "r"); fgets(szLine, sizeof(szLine), fp); fclose(fp); 試しにSJISのテキストファイルだとデバッガで文字化けしません。 開発環境と文字セットの関係はどうなっているのでしょうか? バッファの中身を正しく表示するための設定があるのでしょうか? それとも、根本的に私の考えが間違っているのでえようか? 詳しい方がいたら教えて下さい。宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
> (szLineにはUNICODEが入っているのだからウォッチで正常に参照できると思いました) 違いますよ。プロジェクトプロパティによって fgets の挙動が変わることはありません。 /* このファイル foo.c は(BOMつき)UTF-8です。*/ #include <stdio.h> #include <locale.h> int main() { wchar_t buf[128]; FILE* fp; setlocale(LC_ALL,"japanese"); fp = fopen("foo.c","r,ccs=UTF-8"); while ( fgetws(buf, 128, fp) ) { fputws(buf,stdout); } fclose(fp); return 0; } /* ちゃんと読めます/書けますよ。*/
- wormhole
- ベストアンサー率28% (1626/5665)
以下はVisualStudio2005の頃のものですが基本同じはずです。 http://msdn.microsoft.com/ja-jp/library/yeby3zcb%28v=vs.80%29.aspx