在C ++中将MBCS流转换为UTF-8,反之亦然

时间:2008-12-17 14:49:39

标签: c++ encoding utf-8 mbcs

我正在使用Visual C ++(VS2005)并在多字节字符集(MBCS)中编译项目。但是,程序需要通过XMLRPC与webapp(在utf-8中)进行通信。所以我想也许我可以在内部使用MBCS并将字符串转换为utf-8,然后再将它们发送到xmlrpc模块并在从webapi接收后将它们转换回MBCS。

我想知道在VC ++中用MBCS和UTF-8进行转换的最佳方法是什么?

谢谢大家。

3 个答案:

答案 0 :(得分:3)

调用MultiByteToWideChar将您的字符串转换为unicode,然后调用WideCharToMultiByte将unicode转换为UTF-8。将过程反转到另一个方向,

答案 1 :(得分:2)

您可以尝试wcstombs / mbstowcs

答案 2 :(得分:1)

您也可以使用CT2A并传递CP_UTF8作为代码页,例如:

CT2A pszUTF8(_T("My DBCS string"), CP_UTF8);
// pszUTF8.m_psz contains the UTF8 string.

再次回去:

CA2T pszT(_T("My UTF8 string"), CP_UTF8);
// pszT.m_psz contains the TCHAR string.