url 特殊字符 传递参数解决方法 |
本文标签:url,特殊字符,传递参数 十六进制值
data2=data2.replace(/\%/g,"%25"); 其他一些资料 。 。 。仅供参考 。 。 。 在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误 。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致 。使用服务器端的urlEncode函数编码的URL,与使用客户端java的encodeURI函数编码的URL,结果就不一样 。 java对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
encodeURIComponent ()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串 。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符 。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误 。不会被此方法编码的字符:! * ( )
另外,encodeURI/encodeURIComponent是在java1.5之后引进的,escape则在java1.0版本就有 。 例如:< language="java">write(<a href="http://passport.baidu.com/?logout&aid=7&u=+encodeURIComponent("http://cang.baidu.com/bruce42")+">退出</a>);</> 2、 进行url跳转时可以整体使用encodeURI 例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21"); 3、 js使用数据时可以使用escape 例如:搜藏中history纪录 。 4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同 。
escape不编码字符有69个:*,+,-,. |