Visual C -UTF -8 -CA2W,然后是MBCS的CW2T-可能是一个坏主意



我正在使用一个在const char*类型中生成UTF-8 null端端字符串的库。示例包括:

MIGUEL ANTÓNIO
DONA ESTEFÂNIA

我想将这两种const char*类型转换为CString,以便他们阅读:

MIGUEL ANTÓNIO
DONA ESTEFÂNIA

为此,我正在使用以下功能:

CString Utf8StringToCString(const char * s)
{
    CStringW ws = CA2W(s, CP_UTF8);
    return CW2T(ws);
}

该功能似乎可以做我想要的(至少在这2个情况下)。但是,我想知道:使用CA2W宏,其次是CW2T,这根本是个好主意吗?我是这样做的吗?我应该担心任何副作用吗?

其他一些细节:

  1. 我正在使用Visual Studio 2015
  2. 我的应用程序是使用使用多字节字符集

即使您的应用程序被编译为MBC,您仍然可以使用Unicode字符串,缓冲区和Windows Unicode API,而无需任何问题。

用原始指针(const char*)或诸如CStringstd::string等字符串类中的UTF-8将字符串作为UTF-8传递。当您实际需要渲染显示的字符串时,请转换为Unicode并明确使用W API。

例如:

void UpdateDisplayText(const char* s)
{
    CStringW ws = CA2W(s, CP_UTF8);
    SetDlgItemTextW(m_hWnd, IDC_LABEL1, ws);
}

相关内容

  • 没有找到相关文章

最新更新