最近做一个小程序,需要向某网页POST,因为他网页有个EDIT要输入,所以用抓包工具看了下,是在contant中,有个user=xxxxxxxx&button=%E6%9F%A5%E8%AF%A2是这样的,网页我看了是UTF-8编码格式的。我需要在繁体系统下提交繁体字“楓谷測試”,我提交了,用抓图工具得到user=%E6%A5%93%E8%B0%B7%E6%B8%AC%E8%A9%A6&button=%E6%9F%A5%E8%AF%A2我就想不通,“楓谷測試”怎么变成%E6%A5%93%E8%B0%B7%E6%B8%AC%E8%A9%A6的我直接在代码中
CString a = "user=";a = a + “楓谷測試” + "&button=%E6%9F%A5%E8%AF%A2";POST出去,用抓包工具得到的是user=.........

解决方案 »

  1.   

    UTF8等编码,3个字节一个汉字
      

  2.   

    big5转换成unicode,然后再转换UTF8
      

  3.   

    问题是我转半天总是0xcccccccccccc
      

  4.   


             _tsetlocale(LC_ALL, _T(""));
            char * wsabuff = "楓谷測試";
            // Convert GBK to Unicode        //第一步取得需要转换的字符的长度
            unsigned long lLen = strlen(wsabuff);        //第二步取得转换成WCHAR,所需要的字符数
            int cch = MultiByteToWideChar(CP_ACP,0, wsabuff, lLen, NULL, 0); 
            //第三步定义数组并清零
            WCHAR * wszBuffer = new WCHAR[cch + 1]; 
            ZeroMemory((char *)wszBuffer, (cch+1)*sizeof(wszBuffer[0]));        //第四步转换
            MultiByteToWideChar( CP_ACP, 0, wsabuff, lLen + 1, wszBuffer, cch);
           TRACE(L"%s\n", wszBuffer);       // 第五步转换unicode到UTF8
           BYTE charUTF8[200];
           ZeroMemory(charUTF8, 200);
           WideCharToMultiByte(CP_UTF8, 0, wszBuffer, -1, (LPSTR)charUTF8, 200, NULL, NULL);

           // 第六步,UTF8进行URLEncode的编码。这个你自己完成吧。
            //
           delete [] wszBuffer;
      

  5.   

    [0x1] 0xA5
    [0x2] 0x93
    [0x3] 0xE8
    [0x4] 0xB0
    [0x5] 0xB7
    [0x6] 0xE6
    [0x7] 0xB8
    [0x8] 0xAC
    [0x9] 0xE8
    [0xA] 0xA9
    [0xB] 0xA6