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,那么客户端只要进行一次编码就好

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值