我很擅长使用C ++。我有一个MFC项目需要翻译成俄语。
如果我将MFC设置更改为 Unicode ,则会正确显示。我的问题是:
是否可以使用多字节打印西里尔字母?如果是这样,怎么样?
谢谢你们!
答案 0 :(得分:4)
我鼓励您使用 Unicode 构建您的MFC应用程序(更准确地说:MFC / Visual Studio设置中的UTF-16),就像您写的"如果我改变了它正确显示的MFC到Unicode。" 。
与此同时,您仍然可以使用其他编码,例如您的西里尔文字的 UTF-8 ,并将其存储在CStringA
或std::string
个对象中。然后,您可以在" MFC边界"之间转换UTF-8和UTF-16,例如在对话框或其他应用程序窗口中显示文本时。
您可以使用某些ATL/MFC conversion helpers,或编写自己的转换代码来调用Windows MultiByteToWideChar
和WideCharToMultiByte
,指定正确的代码页"用于转换(例如,CP_UTF8
用于UTF-8编码的文本)。
您可能会发现this MSDN article on Unicode encoding conversions也很有帮助。
另一方面,如果您想使用特定代码页(例如1251 Windows Cyrillic)而不是UTF-8,那么您仍然可以使用MultiByteToWideChar
将代码页中的文本转换为Unicode UTF-16,指定正确的code page identifier。