
先弄清楚当前的汉字编码方式,比如win32默认的GBK,再找到gbk到unicode的编码转换表,转换时在数组中查找即可
UTF-8与Unicode字符的相互转换与16进制Unicode转换汉字
---->Unicode转换为3位UTF-8编码代码(Copy修改即可使用)
CStringstrUnicode;
strUnicode=“阿鸟是帅锅“;
intiLen;
WCHARm_acp[200];
charm_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);
CStringzc;
zc.Format(“%d“,m_UTF);
AfxMessageBox(zc);
//m_UTF便是转换过后10进制的UTF8编码,换成16进制后3位一字便可
---->16进制Unicode转换汉字代码(Copy修改即可使用)
chartranslateHex(charhex)
{
if(hex>='A')

return(hex&0xdf)-'A'+10;
else
returnhex-'0';
}
char*URLstr="%B0%A1%%F1%CA%C7%CB%A7%B9%F8";//阿鸟是帅锅
intlen=strlen(URLstr);
char*result=newchar[len+1];
memset(result,len+1,0);
for(inti=0,j=0;i<=len;i++,j++)
{
if(URLstr[i]=='+')
result[j]='';
elseif(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修改即可使用)
charstr[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;
inti=MultiByteToWideChar(CP_UTF8,0,(char*)str,-1,NULL,0);
strA=newWCHAR[i];
MultiByteToWideChar(CP_UTF8,0,(char*)str,-1,strA,i);
i=WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);
char*strB=newchar[i];
WideCharToMultiByte(CP_ACP,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
AfxMessageBox(strB);
delete[]strA;
delete[]strB;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-26798-1.html
海浪不会不在
请你给我画只烊烊吧
想得美台独