在搜索项目中使用tomcat + SSH框架,出现前后台传中文参数乱码的问题。这是因为出现了编码不统一的问题。后台默认使用UTF-8,而前台传值默认是ISO-8859-1。因此最直接的解决之道就是统一前后台编码。修改tomcat server.xml中的默认编码,问题得到解决。
找到tomcat / conf / server.xml中如下标签,加入URIEncoding="UTF-8"。重启tomcat即可生效。
<!-- A HTTP/1.1 Connector on port 8080 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
另外,中文传值时可以使用JS 的encodeURI或encodeURIComponent将中文字符编码,再在后台进行解码。解码使用java.net.URLDecoder类的decode(String s, String enc)方法,第一个参数是要解码的字符串,第二个参数指定解码时用的编码。由该java方法可以看出,首先还是要保证编码格式的正确性,然后再对正确解析出的编码字符串进行decode。