启用多字节字符集的 MFC 应用程序能否支持 UTF-8 编码字符串?
Can MFC application with Multibyte character-set enable supports UTF-8 encoding strings?
我有一个启用了多字节字符集的遗留 MFC 应用程序。现在要求也支持 UTF-8 字符集。在 Unicode 环境中更改整个应用程序是一项艰巨而冒险的任务。
我找到 Boost.Locale 支持 UTF-8 转换的库。所以我的问题是,它可以与我现有的多字节设置一起使用吗?或任何其他无需将整个应用程序转换为 Unicode 的方法。因为它使用了很多我不想触及的遗留 Windows API。我的简单要求是很少的功能/方法可以生成和解析 UTF-8 字符。
项目参数“多字节字符集”定义了通用文本映射的扩展方式。例如,SetWindowText
在多字节项目中定义为 SetWindowTextA
,在 Unicode 项目中定义为 SetWindowTextW
。这不会阻止您在多字节项目中使用 Unicode 函数,方法是指定其全名,例如 SetWindowTextW
.
例子。 MFC 项目,多字节。
SetWindowText(_T("abc"));
此行使用通用映射,扩展为:
SetWindowTextA("abc");
如果将项目设置更改为 Unicode,则同一行将展开为:
SetWindowTextW(L"abc");
在同一个多字节项目中,您可以显式调用 Unicode 函数:
SetWindowTextW(L"abc");
所以,答案是“是”,您可以将 Unicode 功能添加到多字节项目中,而无需将整个项目转换为 Unicode。使用适当的类型,如 wchar_t
、wstring
等,并显式调用字符串 API。
我有一个启用了多字节字符集的遗留 MFC 应用程序。现在要求也支持 UTF-8 字符集。在 Unicode 环境中更改整个应用程序是一项艰巨而冒险的任务。
我找到 Boost.Locale 支持 UTF-8 转换的库。所以我的问题是,它可以与我现有的多字节设置一起使用吗?或任何其他无需将整个应用程序转换为 Unicode 的方法。因为它使用了很多我不想触及的遗留 Windows API。我的简单要求是很少的功能/方法可以生成和解析 UTF-8 字符。
项目参数“多字节字符集”定义了通用文本映射的扩展方式。例如,SetWindowText
在多字节项目中定义为 SetWindowTextA
,在 Unicode 项目中定义为 SetWindowTextW
。这不会阻止您在多字节项目中使用 Unicode 函数,方法是指定其全名,例如 SetWindowTextW
.
例子。 MFC 项目,多字节。
SetWindowText(_T("abc"));
此行使用通用映射,扩展为:
SetWindowTextA("abc");
如果将项目设置更改为 Unicode,则同一行将展开为:
SetWindowTextW(L"abc");
在同一个多字节项目中,您可以显式调用 Unicode 函数:
SetWindowTextW(L"abc");
所以,答案是“是”,您可以将 Unicode 功能添加到多字节项目中,而无需将整个项目转换为 Unicode。使用适当的类型,如 wchar_t
、wstring
等,并显式调用字符串 API。