2017-10-06 129 views
0

我正在嘗試生成一個帶有unicode字符的消息框,但輸出並不是我所期望的。爲什麼unicode字符串顯示垃圾?

我在做什麼錯?

#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 
*/ 

輸出在Windows上運行10

result dialog window

編譯器是Visual Studio的2017年社區版

+3

是你的源文件被保存爲unicode? – RbMm

+7

將您的文件保存爲UTF-8,並告訴編譯器使用UTF-8作爲源編碼和字符串文字,例如使用cl.exe的'/ utf-8'命令行選項。 – eryksun

+0

謝謝。/utf-8開關解決了這個問題。 – user308879

回答

4

我做了錯事不使用/ UTF-8的編譯器開關正如eryksun所指出的那樣。

將文件保存爲UTF-8,並告訴編譯器使用UTF-8編碼和字符串文字(例如,使用cl.exe的/ utf-8命令行選項。 - eryksun