描述:在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端java的encodeURI函数编码的URL,结果就不一样。
js页面写法:
结果报http400
encodeURI()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
解决:
![]()
![]()
![]()
最后成功解决 url传参问题
补充:
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
项目中发现,直接对url中的参数部分做encodeURI()编码转换,后台servlet通过getParamater()获取时,不需要转换可以直接获取到正确的值
。说明:参数没有用到中文,框架用的是struts框架。
本文深入探讨了URL参数编码的问题,特别是在中文参数传递时遇到的挑战。对比了不同编码方法如urlEncode、encodeURI和encodeURIComponent的区别,并分享了一种在Struts框架下成功解决URL中文参数传递的实践案例。
402

被折叠的 条评论
为什么被折叠?



