我有一个启用了多字节字符集的传统MFC应用程序。现在的要求是也支持UTF-8字符集。在Unicode环境中更改整个应用程序是一项庞大而危险的任务。
我找到了Boost。支持UTF-8转换的Locale lib。所以我的问题是,它能和我现有的Multibyte设置一起工作吗。或者在不将整个应用程序转换为Unicode的情况下使用任何其他方法。因为它使用了很多我不想接触的传统Windows API。我的简单要求是,很少有函数/方法可以生成和解析UTF-8字符。
项目参数"多字节字符集";定义,如何扩展通用文本映射。例如,在多字节项目中,SetWindowText
被定义为SetWindowTextA
,在Unicode项目中,定义为SetWindowTextW
。这并不能阻止您在多字节项目中使用Unicode函数,方法是指定其全名,如SetWindowTextW
。
示例。MFC项目,Multibyte。
SetWindowText(_T("abc"));
这一行使用通用映射,扩展为:
SetWindowTextA("abc");
如果您将项目设置更改为Unicode,则同一行将展开为:
SetWindowTextW(L"abc");
在同一个多字节项目中,您可以显式调用Unicode函数:
SetWindowTextW(L"abc");
因此,答案是";是";,您可以将Unicode函数添加到Multibyte项目中,而无需将整个项目转换为Unicode。使用适当的类型,如wchar_t
、wstring
等,并显式调用字符串API。