2016-07-14 86 views
0

我想在visual C++ 2015中使用UNICODE,但它不起作用,所以我尝试了simple tutorial。这里是代码:UNICODE不起作用 - >“????” (visual C++ 2015)

#undef UNICODE 
#define UNICODE 
#undef STRICT 
#define STRICT 
#include <windows.h> 

int main() 
{ 
    DWORD const infoboxOptions = MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND; 

    char const* const  narrowText = "It's a 日本国 кошка, LOL!"; 
    wchar_t const* const wideText = L"It's a 日本国 кошка, LOL!"; 

    MessageBox(0, wideText, L"Unicode (wide) text:", infoboxOptions); 
    MessageBoxA(0, narrowText, "ANSI (narrow) text:", infoboxOptions); 
} 

它也不起作用。两个消息框都显示“????”而不是特殊字符。

我甚至尝试把wWinMainCRTStartup作为入口点,定义_UNICODE和UNICODE,但没有任何效果。

也许是因为该示例不适用于visual C++ 2015?

+0

无法重现。 – user4581301

+1

源文件编码怎么样?试试'UTF-8' – PcAF

+3

当我尝试在Visual Studio 2013中重现这一点时,它会警告我它不能保存文件并提供将其另存为Unicode;我选择带签名的UTF-8。然后它会在创建'char'常量的行上给出警告,而不是'wchar_t'常量。 'MessageBox'适用于我,但MessageBoxA并不完全如我所料。 –

回答

0

的解决方案是在这另一post:在cpp文件,另存为...,然后选择“带编码保存...”,然后选择“UTF-8无签名”

+2

在Windows上,您可能会发现使用*签名保存UTF-8 *会更好。您更可能在Visual Studio和其他Windows实用程序中获得一致的操作。将文件传递到非Windows系统时,没有签名会更好。 –