之前便一直想把它整理出来, 可惜这除了懒就剩下了更懒 , 所以才拖到现在~希望可以对大家有那么一点的帮助~
---阿鸟
2005.1.4
---->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;