解决JSP Servlet中文乱码问题

本文详细介绍了在JSP Servlet中出现中文乱码的原因,包括post和get请求的乱码问题。解决方法包括设置response和request的编码,以及针对Tomcat服务器的配置调整,如在doPost和doGet方法中指定UTF-8编码,以及在server.xml中设置URIEncoding。通过这些方法可以确保传输和接收数据时保持一致的编码,避免乱码现象。

一、出现乱码的原因

  传输方和接收方采用的编码不一致。传输方对参数采用的是UTF-8编码而接收方却用GBK进行解析,当然是乱码,且Tomcat服务器默认采用的ISO8859-1编码得到参数值,如果没有设置也可能会出现乱码。

二、乱码的类型以及解决办法

1、 response乱码

01

02

03

response.setHeader("content-type", "text/html;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

第一句目的是为了指定浏览器以UTF-8码表打开服务器发出的数据   

第二句目的是设置response使用的码表,控制response以UTF-8码表向浏览器写入数据(必须写在方法中第一行)   

或者:

01

02

03

OutputStream out=response.getOutputStream();

out.write("<metahttp-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());

通过字节流向浏览器写入meta标签控制浏览器使用的码表

2、 request乱码   

request请求分为post和get,分别有不同的方法解决   

post请求乱码   

方法1:在doPost方法的第一行加入如下代码,用于对请求体中的字符集指定编码格式

01

request.setCharacterEncoding("UTF-8");

方法2:利用string方法对指定字符集进行转换,Tomcat默认使用iso-8859-1编码,修改为utf-8编码

01

02

03

String username=request.getParameter("username");

username=new String(username.getBytes("iso8859-1"),"UTF-8");

 get请求乱码  

(1)获取url乱码:
在Tomcat8.0以下版本中,修改\Tomcat 7.0\conf\server.xml配置文件如图,加入URIEncoding=“UTF-8”! 

 (2)响应乱码:
在doGet方法响应之前中加入response.setContentType("text/html;charset=UTF-8");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妉妉师姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值