c++ - WinAPI和UTF-8支持

有关UTF-8支持和各种Win32 API的快速问题。

在典型的C++ MFC项目中,MessageBox()是否可以显示UTF-8编码的字符串?

谢谢,
安德鲁

最佳答案

快速回答:不可以。

更长的答案:如果字符串仅包含常规的ANSI字符(例如美国英语),它将起作用,因为这些字符代码在UTF-8和ANSI中是相同的。

如果包含非ANSI字符或任何双字节编码的字符,则需要使用带有CP_UTF8的MultiByteToWideChar转换为Unicode-16。您的程序还需要使用已定义的UNICODE进行编译,或者您可以使用“W” API调用-例如MessageBoxW。

(请注意,采用文本参数的函数(例如MessageBox,CreateWindow)根据是否定义UNICODE映射到“A”或“W”版本)。

这也可能有用。

http://www.joelonsoftware.com/articles/Unicode.html