新人一枚,
JAVA第一次写后台的时候,后台接收传值中文乱码,然后我给转了
String name = null;
try {
name = new String((request.getParameter("name")==null?"":request.getParameter("name")).getBytes("iso-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
经过这样转码,后台成功接收中文且无乱码。
后面所有的后台接收值都这样写,并无乱码。
再到后来,就打包发布war包。
过了大概几个礼拜,我再次更新发布war包,之前的所有转码统统给我中文乱码了。
注:我并未修改之前的任何东西。
然后我又得把之前所有的后台接收值转码代码取消,改为
String name = request.getParameter("name");
这样,中文乱码又好了。
中间几次更新发布war包,这样反反复复几次,我快要疯了,原因又找不到,求大神指点一下,或者有碰到这种情况的哥哥姐姐帮忙解惑,谢谢!
你要在乱码的时候调试一下看是哪里导致乱码?把request.getParameter("name")的值打印出来看下。你不用每一个参数都指定编码,可以在配置文件中全局配置所有接口参数的编码。具体怎么配看你用的什么框架百度“全局编码配置”
Tomcat 解决乱码的两种方法:
1、为应用配置一个编码拦截器,这样就不需要对所有用到参数的地方都这样转码一次了。
2、修改 Tomcat 的 server.xml 的 connector 配置,添加 URI 配置:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="8000"
redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8" allowTrace="true"/>
在tomcat中修改字符集编码。