VC++ MFC应用程序中如何使用UTF-8编码
How to use UTF-8 encoding in VC++ MFC application
我正在尝试将带有 UTF-8 编码文本的 "static text component"(简单标签)添加到我的 windows 应用程序中。如果我在 visual studio 2017 中使用设计器工具并通过属性放置文本 - 一切看起来都很好 - 打开 .rc 文件后,文本不同(编码错误)。
我读到我需要将文件的编码更改为 utf-8 和 bom,但我没有类似的东西...如果我更改文件编码到 CP1252,程序无法编译 - 所以我正在使用 Unicode(带签名的 UTF-8)- 代码页 65001 现在。
SetWindowTextA("ěščřžýáíé");
GetDlgItem(IDC_SERIAL_NUMBER_TITLE)->SetWindowTextA("ěščřžýáíé");
此代码将执行此操作:
因此它在标题和标签中做了 2 件不同的事情。
并且此代码仅适用于标题和消息框
CStringA utf8 = CW2A(L"ěščřžýáíé", CP_UTF8);
CStringW utf16 = CA2W(utf8, CP_UTF8);
MessageBoxW(0, utf16, 0, 0);
为什么这么复杂?是不是不能正常使用utf8文本?
谁能帮我解决这个问题?谢谢!
您必须将 .rc 文件编码保存为 Unicode - 代码页 1200
其实很简单
// from:
SetWindowTextA("ěščřžýáíé");
// to
SetWindowTextW(m_hWnd, "ščřžýáí");
// also
// std::string -> std::stringw
// CString -> CStringW
// etc.
就是这样 :D
还有 this,了解那里发生的事情非常有帮助和好处!
我正在尝试将带有 UTF-8 编码文本的 "static text component"(简单标签)添加到我的 windows 应用程序中。如果我在 visual studio 2017 中使用设计器工具并通过属性放置文本 - 一切看起来都很好 - 打开 .rc 文件后,文本不同(编码错误)。
我读到我需要将文件的编码更改为 utf-8 和 bom,但我没有类似的东西...如果我更改文件编码到 CP1252,程序无法编译 - 所以我正在使用 Unicode(带签名的 UTF-8)- 代码页 65001 现在。
SetWindowTextA("ěščřžýáíé");
GetDlgItem(IDC_SERIAL_NUMBER_TITLE)->SetWindowTextA("ěščřžýáíé");
此代码将执行此操作:
因此它在标题和标签中做了 2 件不同的事情。
并且此代码仅适用于标题和消息框
CStringA utf8 = CW2A(L"ěščřžýáíé", CP_UTF8);
CStringW utf16 = CA2W(utf8, CP_UTF8);
MessageBoxW(0, utf16, 0, 0);
为什么这么复杂?是不是不能正常使用utf8文本? 谁能帮我解决这个问题?谢谢!
您必须将 .rc 文件编码保存为 Unicode - 代码页 1200
其实很简单
// from:
SetWindowTextA("ěščřžýáíé");
// to
SetWindowTextW(m_hWnd, "ščřžýáí");
// also
// std::string -> std::stringw
// CString -> CStringW
// etc.
就是这样 :D
还有 this,了解那里发生的事情非常有帮助和好处!