博客日历
| 2026年01月 | ||||||
| 一 | 二 | 三 | 四 | 五 | 六 | 七 |
| 29 | 30 | 31 | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | 1 |
存档
2025年03月 11月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
MultiByteToWideChar和WideCharToMultiByte函数的使用
本文假设读者已经了解多字节字符串,宽字节字符串,Unicode,UTF-8,GB2312,GBK等概念。
它可以将一个宽字符的字符串(Unicode)映射为一个多字节字符串(UTF-8,GB2312..)。
它可以将一个多字节字符串(BIG5,UTF-8,GB2312..)映射为一个宽字符的字符串(Unicode)。
下面用一个例子来说明这两个函数的使用。
UTF-8转GB2312:
UTF-8属于多字节字符,GB2312也属于多字节字符。
需要先将UTF-8转换为Unicode,再将Unicode转换为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));
上一篇: MFC学习笔记之10:MFC应用程序的生与死
下一篇: MFC学习笔记之11:拆分窗口(CSplitterWnd)的简单使用
分类:杂谈随感 查看次数:9673 发布时间:2009/7/11 22:38:18