还有其它一下 URL 编码的函数 ,在MSDN里我没找到

解决方案 »

  1.   

    http://hi.baidu.com/jetqu2003/blog/item/c15026a2c8937fabcaefd032.html
      

  2.   


    class CURLCode 
    {
    public:
     CURLCode(){};
     virtual ~CURLCode(){};
     string Encode(const char* lpszData);
     string Decode(string inTmp);private:
     inline BYTE toHex(const BYTE &x){ return x > 9 ? x + 55: x + 48; }
     inline BYTE fromHex(const BYTE &x){ return x > 64 ? x - 55 : x - 48; }
    }; string CURLCode::Encode(const char* lpszData)
    {
     string strResult = "";
     
     unsigned char* pInTmp = (unsigned char*)lpszData;
     // do encoding
     while (*pInTmp)
     {
      if(isalnum(*pInTmp))
       strResult += *pInTmp;
      else
       if(isspace(*pInTmp))
        strResult += '+';
       else
       {
        strResult += '%';
        strResult += toHex(*pInTmp>>4);
        strResult += toHex(*pInTmp%16);
       }
       pInTmp++;
     }
     return strResult;
    }string CURLCode::Decode(string inTmp)
    {
     string strResult = "";
     int inlen = inTmp.length();
     for(int i=0;i<inlen;i++)
     {
      if(inTmp.at(i)=='%')
      {
       i++;
       char c = fromHex(inTmp.at(i++));
       c = c << 4;
       c += fromHex(inTmp.at(i));
       strResult += c;
      }
      else if(inTmp.at(i)=='+')
        strResult += ' ';
      else
       strResult += inTmp.at(i);
     }
     return strResult;
    }
      

  3.   

    简单就用 UrlEscape
    精细控制就用 InternetCanonicalizeUrl
      

  4.   

    我用JS的encodeURIComponent把“汽车”转换成了“%E6%B1%BD%E8%BD%A6”用 InternetCanonicalizeUrl 没做到。。
      

  5.   

    InternetCanonicalizeUrl 用一个函数就能搞定啊 还是怎么弄?
      

  6.   

    InternetCanonicalizeUrl 根本就编码不了中文 所以做不到我要的代替encodeURIComponent的结果
      

  7.   

    自己搞定了,没有现成的API 自己找代码改的!!!效果和encodeURIComponent完全一样(包括过滤的字符都对过了)