tomcat乱码问题

最近在做微信公众号和javaweb项目开发,碰到不少问题。大大小小一一记录一下~
账户申请信息在本地和测试环境插入数据库时中文显示正常,上了生产之后数据库查看是乱码。

tomcat乱码问题

好吧,测试和生产经常出现不一致的情况,找找哪个地方出现乱码了~
出现乱码可能是下列几种编码格式没有统一:

(1)Eclipse编码格式
(2)html页面编码
(3)数据库编码格式
(4)tomcat编码格式

第(1)(2)点确认过没问题,

第(3)点查看一下oracle数据库的编码,执行以下语句:

select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

tomcat乱码问题
编码为utf-8没问题;

最后通过打印发现  在把数据插入到数据库前就乱码了,所以应该是tomcat编码问题没错了

tomcat乱码问题

tomcat服务器出现乱码解决办法:

1、get请求:

(1)修改tomcat中conf下的server.xml文件,这是由于tomcat服务器中对接收的数据以及返回的数据有一定的编码格式
tomcat乱码问题
加入URIEncoding='UTF-8',把原来的修改为以下

<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" URIEncoding='UTF-8' />

(2)通过new String()方法去获得参数

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

name = new String(name.getBytes("iso-8859-1"),"utf-8");

出现这样的问题是因为:

tomcat对于get请求默认使用了ISO-8859-1编码,而对post请求是使用你设置的编码( request.setCharacterEncoding("utf-8");  ),没设置就用默认的ISO-8859-1编码。

2、post请求:

request.setCharacterEncoding("utf-8");也可以写一个filter过滤器