本文假设读者已经了解多字节字符串,宽字节字符串,Unicode,UTF-8,GB2312,GBK等概念。
 
1.WideCharToMultiByte函数
它可以将一个宽字符的字符串(Unicode)映射为一个多字节字符串(UTF-8,GB2312..)
 
2.MultiByteToWideChar函数
它可以将一个多字节字符串(BIG5,UTF-8,GB2312..)映射为一个宽字符的字符串(Unicode)
 
下面用一个例子来说明这两个函数的使用。
 
UTF-8转GB2312
UTF-8属于多字节字符,GB2312也属于多字节字符。
需要先将UTF-8转换为Unicode,再将Unicode转换为GB2312,代码如下:
 
CString Utf8ToGB2312(LPCSTR lpUtf8)
{
    //计算对应Unicode字符串需要的空间
    int nNeedSize=MultiByteToWideChar(CP_UTF8,0,lpUtf8,-1,NULL,0);
    wchar_t *wszUnicode=new wchar_t[nNeedSize];

    //UTF-8转换为宽字符(Unicode)
    MultiByteToWideChar(CP_UTF8,0,lpUtf8,-1,wszUnicode,nNeedSize);
 
    //宽字符(Unicode)转换为多字节字符
    USES_CONVERSION;
    CString csRetString=W2A(wszUnicode);

    delete []wszUnicode;

    return csRetString;
}


总结:各种编码之间的转换,都可以通过Unicode作为中间编码。
 
UTF-8转GB2312的另一种写法:
USES_CONVERSION;
CString csGb2312=W2A(A2W_CP(csUtf8,CP_UTF8));
 


本文链接地址: MultiByteToWideChar和WideCharToMultiByte函数的使用
https://blog.qingfengju.com/index.asp?id=119

上一篇: MFC学习笔记之10:MFC应用程序的生与死
下一篇: MFC学习笔记之11:拆分窗口(CSplitterWnd)的简单使用

分类:杂谈随感 查看次数:9673 发布时间:2009/7/11 22:38:18