【求助】【急】【急救】求个utf-8的UrlEncode函数。 找了整整三天百度和GG,每篇文章都看了,也没有这样的,只有GB2312的UrlEncode 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 各位大哥大姐,我想发个问题,但是没分了,好惨呀!!!能不能送我点分呀??? 先谢谢你们.我的问题是,我需要一个函数,在MFC中把“\u6211\u4ECA\u5E7430\u5C81\u4E86”转换成汉字:我今年30岁了谢谢了!!! 楼主的话我不是太明白,啥叫GB2312的URL编码?用UrlCanonicalize吧,它能执行URL转码,但输出的编码格式保持跟输入的格式一致。如果你输入UNICODE的URL,也返回UNICODE格式的URL转码串。ANSI格式也相同。如果看不懂我的意思,就认真阅读一下MSDN的解释。 这个应该比较容易吧,UTF8三个字节编码,URLEncode出来好像就是类似%XX%XX%XX 已经解决了,先把字符转换成UTF8,再把转换结果拿进原来的ENCODING函数转换出来就对了。结贴给分。 CString txt = _T("\u6211\u4ECA\u5E7430\u5C81\u4E86");txt直接就是 “我今年30岁了”,所以肯定是UNICODE编码而不是UTF8编码的手工解码inline BYTE HexCharToInt(TCHAR c){ if ((c >= '0') && (c <='9')) return (c - '0'); else if ((c >='a') && (c <='f')) return (c - 'a' + 10); else if ((c >='A') && (c <='F')) return (c - 'A' + 10); else return 0;}CString UTF8UrlParser(CString strIN){ CStringW res; const TCHAR* pSrc = strIN; wchar_t *pBuf = res.GetBuffer(strIN.GetLength()); while (*pSrc) { if((pSrc[0] == '\\') && (pSrc[1] == 'u')) { *pBuf++ = (wchar_t)(HexCharToInt(pSrc[2])*0x1000 + HexCharToInt(pSrc[3])*0x100 + HexCharToInt(pSrc[4])*0x10 + HexCharToInt(pSrc[5])); pSrc += 6; } else { *pBuf++ = *pSrc++; } } *pBuf = 0x00; return CString((const wchar_t*)res);} 删除列表框中所有内容的问题 子对话框中的响应函数如何调用父文档类中的变量? 怎样给list控件添加列 如何判断一个字符串中包含的字符是否为正整数? 怎么将一个文件安装到系统目录下?解决再开100分相送! 串口通信 窗口界面问题?望解答! 请问怎样用VC实现类似javascript中的window.open 能不能把一个CString型变量和一个int型变量和成一个CString? 向mshtml.dll高手请教:如何保存修改后的IE文档? 求助:dll中对话框加载位图的问题 wince 下 mfc 文件浏览 类似手机里管理内存卡文件似的的怎么做啊
我的问题是,我需要一个函数,在MFC中把“\u6211\u4ECA\u5E7430\u5C81\u4E86”转换成汉字:我今年30岁了
谢谢了!!!
用UrlCanonicalize吧,它能执行URL转码,但输出的编码格式保持跟输入的格式一致。如果你输入UNICODE的URL,也返回UNICODE格式的URL转码串。ANSI格式也相同。如果看不懂我的意思,就认真阅读一下MSDN的解释。
CString txt = _T("\u6211\u4ECA\u5E7430\u5C81\u4E86");
txt直接就是 “我今年30岁了”,所以肯定是UNICODE编码而不是UTF8编码的手工解码inline BYTE HexCharToInt(TCHAR c)
{
if ((c >= '0') && (c <='9'))
return (c - '0');
else if ((c >='a') && (c <='f'))
return (c - 'a' + 10);
else if ((c >='A') && (c <='F'))
return (c - 'A' + 10);
else
return 0;
}CString UTF8UrlParser(CString strIN)
{
CStringW res; const TCHAR* pSrc = strIN;
wchar_t *pBuf = res.GetBuffer(strIN.GetLength()); while (*pSrc)
{
if((pSrc[0] == '\\') && (pSrc[1] == 'u'))
{
*pBuf++ = (wchar_t)(HexCharToInt(pSrc[2])*0x1000 + HexCharToInt(pSrc[3])*0x100 + HexCharToInt(pSrc[4])*0x10 + HexCharToInt(pSrc[5]));
pSrc += 6;
}
else
{
*pBuf++ = *pSrc++;
}
} *pBuf = 0x00;
return CString((const wchar_t*)res);
}