使用get方法提交form表单时出现乱码解决办法

使用get方法提交form表单时出现乱码解决方法

最近在编程的时候,发现分别用get和post发送中文数据,后者可以得到正确结果,

前者却是乱码。查了些资料,发现服务器对post和get请求的数据的编码处理是不一样的

。现把tomcat下get和url直接发送请求乱码的解决办法列举如下:
方法1. 

 


String name = request.getParameter("name");
byte[] bs = name.getBytes("ISO-8859-1");
name = new String(bs,"UTF-8");

 


方法2.
1) 打开tomcat的server.xml文件,找到区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:
<Connector 
port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true" URIEncoding="GBK" />

或者
   将useBodyEncodingForURI参数设置为true,这个据说是可以,但我测试的时候没有

成功,估计是哪一块设置还有问题,好烦,算了,有一种方法能用就行了。

2)重启tomcat,一切OK。
  
   另外,如果用url发送请求,请求的数据中含有%号,resin得到的是乱码,tomcat得

到的是空值,我的解决办法是把%改成%25,应该还有其他办法,欢迎补充。

这种 :

String keyword = new String(request.getParameter("keyword").getBytes("iso8859-1")) ;

1 楼 hj198703 2011-11-01  
楼主,我的post发送中文数据有问题,你post方法不需要进行中文转码,直接保存到mysql就是中文?使用get方法提交form表单时出现乱码解决办法
2 楼 hj198703 2011-11-01  
post.setEntity(new UrlEncodedFormEntity(getParames(data),HTTP.UTF_8));//设置post参数 并设置编码格式。我的post用这个方式解决了