Servlet解决中文乱码

一、出现乱码原因

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

Servlet 中文乱码问题及解决方案剖析


二、Post请求乱码

1. 乱码原因
  Post请求是以二进制流的形式发送到服务器,服务器收到数据后,默认以iso-8859-1进行编码。
Servlet解决中文乱码_第1张图片
2. 乱码解决
  在获取请求参数前设置字符集即可

	request.setCharacterEncoding("UTF-8");

三、响应乱码

1. 乱码原因
  服务器输出的字符串的编码和客户端显示字符串的编码不一致。
Servlet解决中文乱码_第2张图片

2. 乱码解决

 	//设置response字符流默认使用的码表
	//response.setCharacterEncoding("UTF-8");

    /* 1.设置response的字符流使用的码表
       2.通知浏览器使用指定的码表去解码,在向浏览器输出字符流之前
    */
    response.setContentType("text/html;charset=utf-8");

四、数据库乱码

使用Jdbc连接MySQL数据库,可能会出现乱码

解决方法:

连接数据库URL后 + &characterEncoding=UTF-8

创建表时设置编码格式   ENGINE=InnoDB DEFAULT CHARSET=utf8;

补充:Java web项目各种乱码的解决方案

你可能感兴趣的:(Web后端)