2011-06-16 6 views
1

ASCII以外のUnicode文字を文字列リテラルに直接埋め込み、printfで使用します。これは私のソースコードがutf-8またはutf-16に保存されなければならないことを意味します。 Visual Studio 2010は、どちらの形式でもC++ソースファイルの編集と保存をサポートしています。しかし、コンパイル時に&が実行されると、正しいUnicode文字が生成されません。コンパイラはユニコード文字を埋め込んだ文字列リテラルをサポートしていますか?Visual Studio 2010でC++ソースコードがUnicodeでサポートされていますか?文字列リテラルで

WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ...

wprintf(L" chinese characters:中文字\n"); the trailing chinese characters cannot be displayed 
+0

[utfcppとWin32ワイドAPIの可能な複製](http://stackoverflow.com/questions/3329718/utfcpp-and-win32-wide-api) –

答えて

0

広いリテラルをテストするための簡単な方法はprintfの書式設定の一部をスキップし、まっすぐOSにあなたの文字列を与えることです。

0

#pragma setlocaleが必要な場合があります。

1

私はテストする中国語版のWindowsを持っていないので、これは完全な推測です。

コンソールとファイル出力関数は、ファイルがUTF-16でコード化されていないことを認識しているため、出力前に文字をコードページに変換しようとします。デフォルトロケールがシステム設定に基づくものではなく "C"であるのと同様に、デフォルトコードページもおそらく漢字を含まない不適切なものです。

コンソールのコードページを変更するには、関数SetConsoleOutputCPがあります。この関数が実際のコンソールウィンドウで使用されるコードページを変更するか、プログラム内のUnicodeからの変換にのみ影響するかどうかは不明です。

関連する問題