cstring 转 utf8
来源:互联网 发布:用友软件官网 编辑:程序博客网 时间:2024/06/06 06:43
如果原字符是Unicode编码,使用WideCharToMultiBytes,使用UTF8代码页如果是ansi编码的则先使用MultiBytesToWideChar转换为Unicode编码,再按上述操作完成
//把utf8转成unicode,再转成cstring
void ConvertUTF8ToANSI(char* strUTF8,CString &strANSI) //
{
int nLen = ::MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,(LPCTSTR)strUTF8,-1,NULL,0); //返回需要的unicode长度
WCHAR * wszANSI = new WCHAR[nLen+1];
memset(wszANSI, 0, nLen * 2 + 2);
nLen = MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUTF8, -1, wszANSI, nLen); //把utf8转成unicode
nLen = WideCharToMultiByte(CP_ACP, 0, wszANSI, -1, NULL, 0, NULL, NULL); //得到要的ansi长度
char *szANSI=new char[nLen + 1];
memset(szANSI, 0, nLen + 1);
WideCharToMultiByte (CP_ACP, 0, wszANSI, -1, szANSI, nLen, NULL,NULL); //把unicode转成ansi
strANSI = szANSI;
delete wszANSI;
delete szANSI;
}
void ConvertANSIToUTF8(CString &strANSI)
{
int nLen = ::MultiByteToWideChar(CP_ACP,MB_ERR_INVALID_CHARS,(LPCTSTR)strANSI,-1,NULL,0);
unsigned short * wszUTF_8 = new unsigned short[nLen+1];
memset(wszUTF_8, 0, nLen * 2 + 2);
nLen = MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strANSI, -1, wszUTF_8, nLen);
nLen = WideCharToMultiByte(CP_UTF8, 0, wszUTF_8, -1, NULL, 0, NULL, NULL);
char *szUTF8=new char[nLen + 1];
memset(szUTF8, 0, nLen + 1);
WideCharToMultiByte (CP_UTF8, 0, wszUTF_8, -1, szUTF8, nLen, NULL,NULL);
strANSI = szUTF8;
delete wszUTF_8;
delete szUTF8;
}- cstring 转 utf8
- cstring 转 utf8
- CString UTF8
- CString UTF8
- UTF8 CString 互转问题和代码
- UTF8 CString 互转问题和代码
- CString UTF8 转换
- MFC Cstring unicode 转换为utf8
- CString由Unicode转为utf8格式
- VC,CString,UTF8与GBK互转
- MFC,unicode下CString类型及UTF8问题
- ios9 字符串转UTF8 ,UTF8转字符串
- utf8转gb
- Unicode转UTF8
- utf8 转 gb2312
- gb2312转utf8
- utf8 转 unicode
- UTF8转unicode
- 双缓冲解决图象闪烁
- SQL优化-索引
- 黑马程序员 反射机制
- 30天自制操作系统-第七天
- Core Image Filter Reference (name都在)
- cstring 转 utf8
- Python获取当前时间
- Eclipse最最最常用的快捷键,榨干的精华
- win7下 ,CentOS-6.5-x86_64硬盘安装两个问题
- 选择屏幕
- C++ 常见崩溃问题分析
- OpenSSl编译
- Core Image Programming Guide
- 数据库-基本概念