Unicode下CString转UTF-8,再转UTF-8的%形式

来源:互联网 发布:ipad 抓包淘宝旧版本 编辑:程序博客网 时间:2024/06/15 14:14
 CString str(_T("我是中国人")); CT2A szUtf8(str,CP_UTF8); string s_utf8(szUtf8); CString strRet; //转换成URL encode ConvertStringToURLCoding(strRet,s_utf8.c_str(),s_utf8.length //////////////////////////////////////////BOOL ConvertStringToURLCoding(CString &strDest, const char* strUTF8, int iLength){strDest.Empty();CString strTemp;int i = 0;while(i < iLength){if ((unsigned)strUTF8[i] <= (unsigned char)0x7f){ //字母和数字不转换if ((strUTF8[i] >= '0' && strUTF8[i] <= '9') || (strUTF8[i] >= 'A' && strUTF8[i] <= 'Z') ||(strUTF8[i] >= 'a' && strUTF8[i] <= 'z')||(strUTF8[i]>=8 && strUTF8[i]<=14)||strUTF8[i]==42||strUTF8[i] =='@'||strUTF8[i] =='_'){strDest += (TCHAR)strUTF8[i];}else if (strUTF8[i] == ' ')    //空格转换成+号{strDest += _T('+');}else    //其他标点符号{strTemp.Format(_T("%%%02X"), (unsigned char)strUTF8[i]);strDest += strTemp;}i++;}else{        //汉字或者其他的uft8文字,每3个字节一转strTemp.Format(_T("%%%02X%%%02X%%%02X"), (unsigned char)strUTF8[i], (unsigned char)strUTF8[i + 1], (unsigned char)strUTF8[i + 2]);strDest += strTemp;i += 3;}}if (i == 0){return FALSE;}return TRUE;}

0 0
原创粉丝点击