2017-10-06 6 views
0

ユニコード文字を含むメッセージボックスを生成しようとしていますが、出力が期待どおりではありません。なぜユニコード文字列にガベージが表示されるのですか?

私は間違っていますか?

#define UNICODE 
#include <windows.h> 
#include <stdio.h> 
#include <assert.h> 

int WINAPI wWinMain(HINSTANCE , HINSTANCE , PWSTR , int) 
{ 
    MessageBox(NULL,L"cyrillic АЖ\nchinese ",L"top Ж bott ",MB_OK | MB_ICONWARNING); 
    return 0; 
} 
/* 
compiled using 
cl /c /Wall test4.cpp 
link -out:test4.exe test4.obj user32.lib 
*/ 

出力窓10

result dialog window

上で実行するようコンパイラが、私が間違って何をやっていたのVisual Studio 2017のCommunity Edition

+3

あなたのソースファイルはunicodeとして保存されていますか? – RbMm

+7

ファイルをUTF-8として保存し、ソースコードと文字列リテラルにUTF-8を使用するようにコンパイラに指示します。 '/ utf-8'コマンドラインオプションでcl.exeを実行します。ありがとう、 – eryksun

+0

/utf-8スイッチは、この問題を解決しました。 – user308879

答えて

4

ある/ UTF-8コンパイラスイッチを使用することではなかったですエリクサンによって指摘されているように。

ファイルをUTF-8として保存し、ソースコードと文字列リテラルにUTF-8を使用するようにコンパイラに指示します。 cl.exeの/ utf-8コマンドラインオプションを使用します。 - eryksun

関連する問題