找了整整三天百度和GG,每篇文章都看了,也没有这样的,只有GB2312的UrlEncode

解决方案 »

  1.   

    各位大哥大姐,我想发个问题,但是没分了,好惨呀!!!能不能送我点分呀??? 先谢谢你们.
    我的问题是,我需要一个函数,在MFC中把“\u6211\u4ECA\u5E7430\u5C81\u4E86”转换成汉字:我今年30岁了
    谢谢了!!!
      

  2.   

    楼主的话我不是太明白,啥叫GB2312的URL编码?
    用UrlCanonicalize吧,它能执行URL转码,但输出的编码格式保持跟输入的格式一致。如果你输入UNICODE的URL,也返回UNICODE格式的URL转码串。ANSI格式也相同。如果看不懂我的意思,就认真阅读一下MSDN的解释。
      

  3.   

    这个应该比较容易吧,UTF8三个字节编码,URLEncode出来好像就是类似%XX%XX%XX
      

  4.   

    已经解决了,先把字符转换成UTF8,再把转换结果拿进原来的ENCODING函数转换出来就对了。结贴给分。
      

  5.   


    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);
    }