方法一:通过在tomcat的Server.xml文件中配置utf-8的格式解决,具体配置如下:
找到<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
端口号为8080默认的,协议是HTTP/1.1协议,找到之后配置如下:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443" />
建议大家不要配置在8443端口后面,笔者就碰到过这样的问题。因为配置在最后,总有服务去修改server.xml文件,干掉utf-8配置。
注:很多公司的项目中因为开发人员处理get请求乱码是这种方式,没有明显的在代码中处理,导致新员工拿到项目之后,跑起来数据没有显示。如果大家碰到这样的问题可以这样配置试着去解决问题。
方法二:通过前端发送请求参数编码,后台接收数据时进行解码操作,具体操作如下
"&elements=" +encodeURI(encodeURI(elements)); //前端编码,这是get请求常见的拼接字符串传参的方式
String elements=null; //懒加载方式,也是java代码优化的一种方式
try {
elements = java.net.URLDecoder.decode(request.getParameter("elements"), "UTF-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
方法三:通过request解决请求乱码
String username=request.getparameter("username");
//这种方式是先通过iso-8859-1这种中文字符集先编码,然后在通过utf-8解码
//因为get请求是通过地址栏传参,会被iso-8859-1解码传输
username=new String(username.getBytes("iso-8859-1"),"utf-8");
顺便提一下request请求解决post乱码,方法如下:
//这种方式解决乱码必须放在request接受参数之前才能起作用。
request.setCharacterEncoding("utf-8");
方法四:通过response解决响应中文乱码
//必须要在向页面输出之前进行设置才能起作用,否则设置无效
response.setContentType("text/html;charset=utf-8");