Tomcat中对于post方法提交的表单采用的默认编码

转自http://zhangyou1010.iteye.com/blog/870760

当我通过Jsp提交数据到后台的时候,插入到数据库,发现中文是乱码,debug发现还没到数据库就已经是乱码了,这说明

 

编码的设置有问题。

 

检查了下我的jsp页面,编码只设pageEncoding="UTF-8" ,contentType没有设置,表单的提交方式是get,把表单的

 

提交方式改为post试了下,发现post方式居然提交中文居然不会乱码。汗一个,难道post和get使用不同的编码提交到服

 

务器?另外还试了一种方式,根据网上的说法,把tomcat_home/conf/目录下的server.xml中Connector节点中增加

 

URIEncoding="utf-8" ,如果用get方式提交表单,中文也不会乱码。

 

从上面的小实验基本可以猜出,当页面用get方式提交时,用的编码是URIEncoding的值,如果不设这个值的话,默认值

 

不是utf-8,后来查了下tomcat的wiki,URIEncoding的默认编码是ISO-8859-1,所以get方式提

 

交中文会乱码。

 

根据tomcat的wiki可以发现:

1.get方式是通过url来传数据的,默认是使用ISO-8859-1的方式来编码数据。要改变get的默认编码方式可以通过修改

 

Connector节点中的URIEncoding的值。

 

2.post传数据时,使用的编码方式和post是不同的。post方式依据的是什么编码来提交数据呢?还有待查资料。

 
参考了apache的资料:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
 
补充:刚测试了下,可以排除post的编码和

中 chartset有关。

我刚用的charset=gb2312,提交"春节"两个字,发现提交给后台的是:name=%E6%98%A5%E8%8A%82 ,  

这对应的是utf-8编,因为"春节"的gb2312对应的值是:%b4%ba%bd%da


你可能感兴趣的:(Tomcat中对于post方法提交的表单采用的默认编码)