GET请求中关于中文的编码与解码

问:有时候在特殊情况下,需要使用GET请求来传递参数,而传递的参数中有中文字符。如何直接传递过去,会导致乱码问题,针对这个情况如何解决?

原因:在使用get请求传递参数时,需要依赖浏览器环境,由于我们在javascript中没有做任何操作,完全依赖浏览器进行编码后传递到后台,一旦于后台编码格式不一样,就会出现乱码。

答:

1 在javascript中使用encodeURI()方法进行编码。

在java后台使用 new String(str.getBytes("iso8859-1"),"UTF-8")方法来进行解码。

2 在javascript中使用encodeURI(encodeURI(str))进行编码。

在java中使用URLDecoder.decode(str, "utf-8")进行解码。

为什么这里要进行二次编码?

利用encodeURI()在javascript中对中文URL参数进行编码时,会和转义字符冲突,浏览器会将编码后的字符分开。会造成与原来的编码不符。第二次编码浏览器会将第一次转义的编码在转义过来,这样就和原来编码的数据一致了。

你可能感兴趣的:(GET请求中关于中文的编码与解码)