Httpget请求Servlet中的出现中文乱码问题

get请求中文乱码问题

浏览器通过一种编码方式对请求数据进行编码,然后传到服务器,如何没有指明请求编码,服务器通过其默认编码来进行解码。当服务器处理完数据后,在解决中文乱码前先让我们看一下乱码的分类:

  • 响应编码
  • 请求编码
  • 暂时写个解决方案,原理以后在介绍

下面我们解释一下这两种编码:

  1. 响应编码是指在服务器返回数据时对数据的编码方式,如果编码不支持中文,且又在代码中使用了中文,一般会出现乱码问题。例如:当使用response.getWriter()获得PrintWriter来向客户端发送字符数据时,如果在之前没有设置编码,并且发送中文一定会出现乱码。使用response.getWriter()之前可以使用response.setCharaceterEncoding(“utf-8”)方法来设置字符流的编码为utf-8。
      * 在使用response.getWriter()之前可以使用response.setHeader(“Content-type”,”text/html;charset=utf-8”)来设置响应头,通知浏览器服务器这边使用的是utf-8编码,而且在调用setHeader()后,还会自动执行setCharacterEncding()方法。这样浏览器会使用utf-8解码,所以就不会乱码了!  * setHeader(“Content-Type”, “text/html;charset=utf-8”)的快捷方法是:setContentType(“text/html;charset=utf-8)。
  2. 客户端发送给服务器的请求参数是什么编码:客户端首先要打开一个页面,然后在页面中提交表单或点击超链接!在请求这个页面时,服务器响应的编码是什么,那么客户端发送请求时的编码就是什么。
      * 服务器端默认使用什么编码来解码参数:服务器端默认使用ISO-8859-1来解码!所以这一定会出现乱码的!因为iso不支持中文!

解决方案:在doGet或者doPOST请求中加入两句话response.setHeader(“Content-Type”, “text/html;charset=utf-8”)和response.setCharaceterEncoding(“utf-8”)两句话即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值