javaurl传参格式,javaurl传参编码
当使⽤地址栏提交查询参数时,如果不编码,⾮英⽂字符会按照操作系统的字符集进⾏编码提交到服务器,服务器会按照配置的字符集进⾏解码,所以如果两者不⼀致就会导致乱码。
encodeURI函数采⽤UTF-8对URL进⾏编码,所以如果服务器在进⾏解码时使⽤的是其他的编码⽅式就会出现乱码,默认的服务器配置的解码字符集都不是UTF-8,所以⼤部分情况下地址栏提交中⽂查询参数时会产⽣乱码;针对这种情况,可以连续使⽤两次encodeURI在客户端(主要指浏览器)对⾮英⽂字符进⾏编码,然后在服务端使⽤java.URLDecoder(String."UTF-8")解码,即可得到正确的中⽂。
原理:
如果只进⾏⼀次encodeURI,得到的是UTF-8形式的URL,服务器端通过Parameter()解码查询参数(通常是iso-8859-1)就会得到乱码。
如果进⾏两次encodeURI,第⼀次编码得到的是UTF-8形式的URL,第⼆次编码得到的依然是UTF-8形式的URL,但是在效果上相当于⾸先进⾏了⼀次UTF-8编码(此时已经全部转换为ASCII字符),再进⾏了⼀次iso-8859-1编码,因为对英⽂字符来说UTF-8编码和ISO-8859-1编码的效果相同。在服务器端,⾸先通过Parameter()⾃动进⾏第⼀次解码(可能是gb2312,gbk,utf-8,iso-8859-1等字符集,对结
在线url网址编码解码果⽆影响)得到ascii字符,然后再使⽤UTF-8进⾏第⼆次解码,通常使⽤java.URLDecoder("","UTF-8")⽅法。
两次编码两次解码的过程为:
UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码,编码和解码的过程是对称的,所以不会出现乱码。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论