如何得到汉字的UTF-8内码 得到一个CString cstr = L“阳”;如何得到cstr的UTF-8内码。如“阳”的UTF-8码为:E998B3 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int main(void) { char str [ 256 ] = "阳" ; //一段UTF-8编码 WCHAR* strA; int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0); strA = new WCHAR[i]; MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i); i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL); char *strB=new char[i]; WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL); //strB即为所求 delete []strA; delete []strB; return 0; } 最后strB中所得到的内容是:"闃“,得不到UTF-8码:E998B3 你要以16进制输出啊,加了一行int main(void) { char str [ 256 ] = "阳" ; //一段ansi编码 WCHAR* strA; int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0); strA = new WCHAR[i]; MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i); i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL); char *strB=new char[i]; WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL); printf("%02X%02X%02X", (int)strB[0], (int)strB[1], (int)strB[2]); delete []strA; delete []strB; return 0; } WideCharToMultiByte 制定UTF8字符集,得到对应的编码数据 用WideCharToMultiByte,第1参数给CP_UTF8,可以转换成UTF-8编码。如果需要转为十六进制字符串,可以用逐字节用%02X格式化,再连到一起。 关于高精度定时器的问题 CFileFind里FindNextFile函数的疑问 IDocHostUIHandler的external后的函数如何实现 问各位达人一个ISAPI筛选器未加载的问题 向别的程序发送WM_COMMAND和它自定义的消息 如何才不能显示IE下载时候的对话框。 vc用ado调用access2000的数据库如何打包 在基于dialog的程序中添加了基类是CDaoRecordset的类为什么出错? 怎么把oracle中date型的字段取出来,赋值给char型的字符数组?急!!!! 关于16进制字符转换 NM_DBLCLK事件 生成的txt里面有乱码???
{
char str [ 256 ] = "阳" ; //一段UTF-8编码
WCHAR* strA;
int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i);
i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
delete []strA;
delete []strB;
return 0;
}
{
char str [ 256 ] = "阳" ; //一段ansi编码
WCHAR* strA;
int i= MultiByteToWideChar ( CP_ACP , 0 ,(char*) str ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_ACP , 0 ,( char * ) str, -1, strA , i); i= WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte (CP_UTF8,0,strA,-1,strB,i,NULL,NULL); printf("%02X%02X%02X", (int)strB[0], (int)strB[1], (int)strB[2]);
delete []strA;
delete []strB;
return 0;
}