修改Tomcat默认编码,防止页面中文参数乱码

原因:tomcat默认的编码是: iso-8859-1
        当我们jsp页面编码是UTF-8时,针对中文参数,即使你在页面用java.net.URLEncoder.encode(param)进行了转码,后台用java.net.URLDecoder.decode(param)进行解码,获得的参数依旧是乱码,这就需要我们修改tomcat的默认编码了。
        修改方法如下:
TOMCAT中的server.xml中的
<Connector>中添加两个设置
useBodyEncodingForURI="true" :设置POST和GET使用相同编码
URIEncoding="UTF-8" :对URI使用utf-8编码处理
        结果如下:
<Connector  useBodyEncodingForURI="true"  URIEncoding="UTF-8"
     connectionTimeout="20000" maxThreads="150" 
     port="8888" protocol="HTTP/1.1" redirectPort="8443"
/>

特殊情况:使用servlet的request.getParameter()获得参数(针对URL重写的情况)
        因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter()方法的时候使用服务器指定的编码格式自动解码一次,所以前台编码一次后台解码一次而解码和编码的方式不一致,所以造成了乱码的出现。
        这时也需要修改tomcat的默认编码为UTF-8,这样页面使用java.net.URLEncoder.encode(param)对中文进行转码,后台用request.getParameter()获得参数的时候,可以不用再次转码;
        即时前台没有对中文进行编码,后台用request.getParameter()获得的参数依旧是正确的中文;
        不过由于中文参数没有编码,在浏览器地址栏中显示的是参数是中文。
如下:
(1)页面使用java.net.URLEncoder.encode(param)对中文进行转码时
http://localhost:8080/CRUD/list.do?pageNum=3&totalNum=3&&name=%E5%A2%A8%E9%A6%99
(2)页面没有对中文进行转码时
http://localhost:8080/CRUD/list.do?pageNum=3&totalNum=3&&name=墨香
针对上面两种情况,在后台用request.getParameter()都可以获得正确的参数,而不用转码

注:我用form表单提交参数时页面编码是UTF-8,没有修改tomcat的默认编码,获得的中文参数没有出现乱码,但是URL重写时,中文参数变成了乱码!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值