get请求时候参数中含有“中文”字段出现乱码问题的原因和解决方法 | 您所在的位置:网站首页 › get请求带中文转码问题 › get请求时候参数中含有“中文”字段出现乱码问题的原因和解决方法 |
关于使用get请求时候,在传递的参数中有中文字符时候出现乱码问题的原因 1.服务器:服务器按照默认的iso-8859-1进行解码。 A、post方式 post方式属于表单提交,参数存在于请求体中,只需要如下配置即可。 request.setCharacterEncoding("utf-8”) B、get方式 get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码;
解决的方法(一般选第一种): 1.客户端对参数进行两次EncodeURI.encode操作 原理: 如果只进行一次encodeURI,得到的是UTF-8形式的URL,服务器端通过request.getParameter()解码查询参数(通常是iso-8859-1)就会得到乱码(服务器按照默认的iso-8859-1进行解码)。 进行两次encodeURI,第一次编码得到的是UTF-8形式的URL,第二次编码得到的依然是UTF-8形式的URL,但是在效果上和第一次进行一次UTF-8编码(此时全部转换为ASCII字符,没有多字节字符了),第二次进行一次iso-8859-1编码是一样的. 因为对英文字符来说, UTF-8编码和ISO-8859-1编码的结果相同。在服务器端, 首先通过request.getParameter()自动进行第一次解码(可能是gb2312,gbk,utf-8,iso-8859-1等字符集,对结果无影响)得到Ascii字符,然后再使用UTF-8进行第二次解码,通常使用java.net.URLDecoder.decode("","UTF-8")方法。 2.服务端将解码格式直接配置为utf-8,那么客户端只要进行一次编码就好 |
CopyRight 2018-2019 实验室设备网 版权所有 |