1

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

例えば

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

3 に答える 3

1

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

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

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

于 2011-06-17T03:29:57.263 に答える
0

#pragma setlocale が必要なものである可能性があります。

于 2011-06-16T20:06:48.667 に答える
0

ワイド リテラルをテストする簡単な方法は、 の書式設定部分をスキップしてprintf、文字列を OS: に直接渡すことですWriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L" chinese characters:中文字", ...

于 2011-06-16T09:41:44.330 に答える