tomcat乱码问题

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


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

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

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

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

select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

编码为utf-8没问题;

最后通过打印发现  在把数据插入到数据库前就乱码了,所以应该是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过滤器



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值