最近在做微信公众号和javaweb项目开发,碰到不少问题。大大小小一一记录一下~
账户申请信息在本地和测试环境插入数据库时中文显示正常,上了生产之后数据库查看是乱码。
好吧,测试和生产经常出现不一致的情况,找找哪个地方出现乱码了~
出现乱码可能是下列几种编码格式没有统一:
(1)Eclipse编码格式
(2)html页面编码
(3)数据库编码格式
(4)tomcat编码格式
第(1)(2)点确认过没问题,
第(3)点查看一下oracle数据库的编码,执行以下语句:
select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';
最后通过打印发现 在把数据插入到数据库前就乱码了,所以应该是tomcat编码问题没错了
tomcat服务器出现乱码解决办法:
1、get请求:
(1)修改tomcat中conf下的server.xml文件,这是由于tomcat服务器中对接收的数据以及返回的数据有一定的编码格式加入 URIEncoding='UT F -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过滤器