tomcat字符乱码正解(全)

自tomcat5.x起,tomcat就对post与get采用不同的解码方法。

对于post提交的中文,我们一般这么做:req.setCharacterEncoding(charset);

对于get:可通过如下设置方式

tomcat的config/server.xml

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />

中加入

useBodyEncodingForURI="true"(推荐) 或URIEncoding="utf-8"(不推荐,tomcat所有App的get处理只能用utf-8解码)

对于返回页面,必须做类似的设置:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

目的是告诉浏览器,该通过哪个字符集解码。

---------------------------------------------------------------------------------------------------------

如果有哪家熊孩子特别手欠,非要在地址栏输入中文参数,而你又非要接受的话,可以这样:

username = new String(username.getBytes("iso-8859-1"),"gbk");

过程解释

编码

地址栏输入中文,浏览器使用操作系统默认字符集编码(GBK);其余正常的get、post提交,用的都是页面指定的字符集,即<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">指定的utf-8.

解码

tomcat拿到这个URL后,

若是post,则按req.setCharacterEncoding(charset);字符集解析,

若为get,则按server.xml中参数解析(如上述,没指定参数则为iso-8859-1)

 

转载于:https://my.oschina.net/u/1379006/blog/180348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值