我正在使用MSVC 2022的窗口API制作一个GUI,
当我试图在我的小部件中显示é char时,编码出现了问题
下面是小部件的代码:我尝试使用宽字符串和TEXT宏
CreateWindowW(
L"STATIC", // Predefined class; Unicode assumed
L"éééé", // text
WS_VISIBLE | WS_CHILD, // Styles
10, // x position
10, // y position
250, // Button width
50, // Button height
hWnd, // Parent window
NULL, // No menu.
hInst,
NULL); // Pointer not needed.
CreateWindowW(
L"BUTTON", // Predefined class; Unicode assumed
TEXT("réééé"), // Button text
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, // Styles
300, // x position
10, // y position
250, // Button width
50, // Button height
hWnd, // Parent window
(HMENU)ID_OK, // No menu.
hInst,
NULL); // Pointer not needed.
我的MSVC对文件使用UNICODE(我签入了参数),并定义了UNICODE和_UNICODE。
我错过什么了吗?
感谢您抽出宝贵时间
感谢John的评论,我解决了这个问题,cpp文件保存在utf-8而不是utf-16中。这可以通过“另存为”菜单进行更改。
1条答案
按热度按时间hmae6n7t1#
我错过什么了吗?
是的,MVSC中使用的字符集不必与您正在使用的库中使用的字符集相同,也不必与运行时选择的字符集相同。请检查您的库文档,以支持UNICODE,因为它似乎将您的Unicode序列显示为iso-latin-1字符对。
恕我直言,Microsoft花了很长时间才适应unicode。尽管MVSC已经支持它,但很可能您使用的Windows环境/库不支持它(或默认配置不支持)。您在
CreateWindowW
调用中使用的注解不足以使它采用UNICODE字符。您可能需要在其他地方指定它。