我将字符串经过加密编码后产生一些特殊字符 我用
IdHTTP1.get('http://1892.168.0.1/main.dll?a='+我的字符串);
的方法发送就会出错.
请问有什么方法可以避免这个问题 ?

解决方案 »

  1.   

    你的字符串可能包含了URL不允许的字符,不同的WEB服务器约定有些差异,你可以转成URL编码IdHTTP1.get(IdHTTP1.URL.URLEncode('http://1892.168.0.1/main.dll?a='+我的字符串));
    那会把那些空格、减号、中文等等URL不允许出现的字符变成 %xx形式同样 IdHTTP1.URL.URLDecode 是他的逆运算
      

  2.   

    为什么我用post的方式好像就不会出现这种问题?
      

  3.   

    另外你的字符串不能太长,编码后的整个URL不要超过1024字节,否则可能服务器处理不了,曾经有一个IE的漏洞就是针对大于1024的漏洞的。过长的字符串要使用POST方式。
      

  4.   

    本身有一个encode似的控件可以
      

  5.   

    为什么我用post的方式好像就不会出现这种问题?
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    答案我告诉你了,URL里面很多字符不允许出现,作为Get方式的参数限制更多。POST就没这问题,因为他不作为URL一部分。