多字节的西里尔字母

时间:2018-02-01 09:00:53

标签: c++ unicode mfc cyrillic

我很擅长使用C ++。我有一个MFC项目需要翻译成俄语

如果我将MFC设置更改为 Unicode ,则会正确显示。我的问题是:

是否可以使用多字节打印西里尔字母?如果是这样,怎么样?

谢谢你们!

1 个答案:

答案 0 :(得分:4)

我鼓励您使用 Unicode 构建您的MFC应用程序(更准确地说:MFC / Visual Studio设置中的UTF-16),就像您写的"如果我改变了它正确显示的MFC到Unicode。"

与此同时,您仍然可以使用其他编码,例如您的西里尔文字的 UTF-8 ,并将其存储在CStringAstd::string个对象中。然后,您可以在" MFC边界"之间转换UTF-8和UTF-16,例如在对话框或其他应用程序窗口中显示文本时。

您可以使用某些ATL/MFC conversion helpers,或编写自己的转换代码来调用Windows MultiByteToWideCharWideCharToMultiByte,指定正确的代码页"用于转换(例如,CP_UTF8用于UTF-8编码的文本)。

您可能会发现this MSDN article on Unicode encoding conversions也很有帮助。

另一方面,如果您想使用特定代码页(例如1251 Windows Cyrillic)而不是UTF-8,那么您仍然可以使用MultiByteToWideChar将代码页中的文本转换为Unicode UTF-16,指定正确的code page identifier