web项目很容易乱码, 尤其是传中文参数的时候
有的时候,页面和后台都设置是同样的编码为什么还是会乱码呢?
原因是web容器的问题, 比如Tomcat默认编码是ISO-8859-1,Weblogic默认编码是UTF-8,这时若是页面传的中文参数与web容器的默认编码不统一时便会出现乱码的现象
解决方案:
一,修改web容器的编码:
1.修改Tomcat的默认编码,找到conf/server.xml,在<Connector port="8080" 节点中加入属性URIEncoding="UTF-8" ... 默认是ISO-8859-1
2.修改Weblogic的默认编码,找到与web.xml同路径的weblogic.xml,加入如下配置:
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
二,在代码中进行编码转换:
因为一般我们传入中文参数的请求并不多,所以对某些请求单独进行设置也不失为一个好办法..
1.对于编码为ISO-8859-1的web容器:
String param= new String(param.getBytes("ISO-8859-1"), "UTF-8");
2.
对于编码为GBK的web容器:
String param= new String(param.getBytes("GBK"), "UTF-8");
其他的方式,诸如加入filter的方式网上有很多,参考: web乱码解决
还有如何判断web容器是Tomcat还是Weblogic还是Jetty等.. 参考:判断web容器类型