• 締切済み

VC++2010の文字セット

VisualStudio2010の文字セットに関して質問があります。 VisualStudio2010でC++でコンソールアプリのプロジェクトを作ります。 このプロジェクトの文字セットは、プロジェクトのプロパティから見ると デフォルトでUNICODEになっています。 そこでUTF-8のテキストファイルを作成した後に以下のプログラム をデバッガで実行したのですが、szLineの全角文字列が化けて読めません。 (szLineにはUNICODEが入っているのだからウォッチで正常に参照できると思いました) fp = fopen("file.txt", "r"); fgets(szLine, sizeof(szLine), fp); fclose(fp); 試しにSJISのテキストファイルだとデバッガで文字化けしません。 開発環境と文字セットの関係はどうなっているのでしょうか? バッファの中身を正しく表示するための設定があるのでしょうか? それとも、根本的に私の考えが間違っているのでえようか? 詳しい方がいたら教えて下さい。宜しくお願い致します。

みんなの回答

回答No.2

> (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)
回答No.1

以下はVisualStudio2005の頃のものですが基本同じはずです。 http://msdn.microsoft.com/ja-jp/library/yeby3zcb%28v=vs.80%29.aspx

関連するQ&A