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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GET请求中关于中文的编码与解码相关的知识,希望对你有一定的参考价值。

参考技术A 问:有时候在特殊情况下,需要使用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请求中关于中文的编码与解码的主要内容,如果未能解决你的问题,请参考以下文章

get方式提交中文乱码(两次编码,一次解码)

get请求utf-8解码

客户端编码与服务器解码全过程

Get请求,Post请求乱码问题解决方案

http的get和post的区别

Javaweb的get请求乱码解决