fopenでファイルを開くときに、ccs = encoding(MSDNで説明されているように)を使用してエンコーディングをUTF-8に設定しています。
ファイルに書き込むときは正常に機能します
wchar_t* unicode_text = L"こんにちは";
FILE* f = fopen("C:\\test.txt", "w,ccs=UTF-8");
fwprintf(f, L"%s\n", unicode_text);
fclose(f);
テキストエディタでファイルを開くと、Unicodeが正しく表示されます。ただし、作成されたファイルから読み取ろうとすると、UTF-8エンコーディングが検出されません。
wchar_t buffer[1000];
FILE* f = fopen("C:\\test.txt", "r,ccs=UTF-8");
fgetws(buffer, 1000, f);
fclose(f);
MessageBoxW(0, buffer, 0, 0);
メッセージボックスに「ããã«ã¡ã¯」と表示されます。
なぜこれが起こるのですか?ccs = UTF-8は、書き込み用にファイルを開く場合にのみ有効ですか?