最近新建了一个web工程,但是提交中文信息的时候却乱码了,纠结了很久,网上的方法也都试过了,还是没有效果。。。。
不过还是解决了,总结一下:
1.关于页面本身显示就乱码的,可以在页面添加以下信息:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
加了之后是一定可以解决的
2.提交jsp中文信息到服务器乱码
我就是遇到了这种情况,在网上copy了以下代码:
<span style="white-space:pre"> </span><filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
最后连tomcat的编码也改了,还是没用。。。。。。绝望中,连tomcat也换了好几个版本去试,依然没用。
后来看到有说在页面设置request提交时的编码,依然没用。
最后再服务器端测试,看看到底jsp提交过来的编码是什么,后来发现:
System.out.println(new String (menu.getMenuName().getBytes("ISO-8859-1"),"UTF-8"));
通过这种方式拿到了正确的中文,说明我的设置完全没起作用,准备使用过滤器的时候,发现我的spring转换编码的过滤器没起作用,少了
<span style="white-space:pre"> </span><filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这么一段代码。。。。。。。怪别人代码没写全,更怪自己大意了。。。。。。。。。
加上之后就果断好了。