您的位置:首页 > 其它

UTF-8与Unicode字符的相互转换 与 16进制Unicode转换汉字

2008-08-01 23:11 633 查看
---->Unicode转换为3位UTF-8编码代码(Copy修改即可使用 )

CString strUnicode;
strUnicode=“阿鸟是帅锅“;
int iLen;
WCHAR m_acp[200];
char m_UTF[200];

iLen = MultiByteToWideChar(CP_ACP,NULL,strUnicode,-1,m_acp,200);

iLen = WideCharToMultiByte(CP_UTF8,NULL,m_acp,-1,m_UTF,2000,NULL,NULL);

CString zc;
zc.Format(“%d“,m_UTF);
AfxMessageBox(zc);

//m_UTF便是转换过后10进制的UTF8编码, 换成16进制后3位一字便可

---->16进制Unicode转换汉字代码(Copy修改即可使用 )

char translateHex(char hex)
{
if(hex >= 'A')
return (hex & 0xdf) - 'A' + 10;
else
return hex - '0';
}

char* URLstr="%B0%A1%C4%F1%CA%C7%CB%A7%B9%F8"; //阿鸟是帅锅
int len = strlen(URLstr);
char* result = new char[len + 1];
memset(result, len + 1, 0);
for(int i = 0, j = 0; i <= len; i++, j++)
{
if(URLstr[i] == '+')
result[j] = ' ';
else if(URLstr[i] == '%')
{
result[j] =
translateHex(URLstr[i + 1]) * 16 +
translateHex(URLstr[i + 2]);
i += 2;
} else
result[j] = URLstr[i];
}

AfxMessageBox(result);

---->UTF-8转换Unicode汉字代码(Copy修改即可使用 )
char str [ 256 ] = {( char )0xE4, ( char ) 0xBD, ( char ) 0xA0,
( char ) 0xE5 ,( char)0xA5 ,(char)0xBD,
(char)0x61, (char)0x62 ,(char)0x63,(char)0} ; //一段UTF-8编码
WCHAR* strA;
int i= MultiByteToWideChar ( CP_UTF8 , 0 ,(char*) str ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_UTF8 , 0 ,( char * ) str, -1, strA , i);
i= WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte (CP_ACP,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
AfxMessageBox(strB);
delete []strA;
delete []strB;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐