在用HTTP发送带有中文时用encodeURI()方法,发送带有特殊字符的字符串时,这个方法对这!@#$%^*()等是不进行重新编码的,因为这些是ASCLL编吗,如果用get 方式,发送特殊字符会不能成功发送。
这种情况下可以用post 方式去发送一些特殊字符,例如*()%$等,但post方式在发送的内容中如果有&字符还是不可以因为post在传输过程中是一个特殊字符。如果先把这个&字符转换为%26的话,如果再用encodeURI() %号 也要会被转换成%25 这样还是出现错乱,
总结:
1 。如果用GET方式请求:应该先先把所有的要发送的内容进行encodeURI , 然后再把~!@#$%^&*()等特殊字符替换为 (% +16进制)
2 。如果用POST方式请求 :应该为 先把所有的要发送的内容进行encodeURI(),然后再把&符替换为%26这样OK了