使用get方法提交表单出现中文乱码的情况
提交表单的时候有post方法和get方法。
使用get方法提交提交表单的时候,提交的数据作为查询字符串被附加到URL的末端发送到服务器,此时在服务器端调用setCharacterEncoding()方法就没有用了,我们需要得到请求参数值后,进行编码转换。
解决的方法有两种
一种解决方法是
将你接收的参数转码,如原来接收的语句如下:
String username = request.getParameter("username");
现在再在后面加上一句username= new String(username.getBytes("ISO-8859-1"),"utf-8");
其中,username.getBytes("ISO-8859-1")是按照“ISO-8859-1”字符集编码将username字符串转化为byte数组,再通过new String()方法,使用指定的“UTF-8”字符集把byte数组构造成为一个新的String。
这种解决方法只适合于传递值比较少的情况下,而且每得到一个数据就需要进行转码操作。
一种解决方法是
在Tomcat中设置字符集
在Tomcat安装目录下面找到servel.xml文件,找到其中的<Connector>元素,注意有多个<Connector>,需要找到和下面对应的一个
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />
然后在其中添上一个 URIEncoding属性,将它的值设置为“UTF-8”,更改后的代码如下
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
使用超链接传递参数的时候出现中文乱码
使用超链接传递参数的时候会出现中文乱码的情况,这是因为使用超链接进行数据传递的时候,使用的是get方法提交请求,所以修改的方法和上面的方法一样,按照上面的方法修改即可。
原文:http://blog.csdn.net/tiange_xiao/article/details/51524895