今天测试程序时出现乱码问题,网上查的资料都是说设置三个地方:
1.<%@ page contentType="text/html; charset=gb2312"%>(JSP编码方式)
2.<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> (JSP页面显示)
3.<%
request.seCharacterEncoding("gb2312");//(处理表单请求)
%>
我设置了上面的三个地方还是不行,后来找到原因:因为我的MySQL数据库安装时没有选择默认编码格式,
这样在存入数据库时就不会有乱码了.
关于程序中处理字符乱码:
还可以统一在servlet中统一设置:自己写一个处理字符的Filter类,然后在Servlet进行配置.
如果使用spring我们可以直接使用spring框架中提供的处理字符的类:org.springframework.web.filter.CharacterEncodingFilter,配置如下:
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB18030</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
意外收获:上面的配置启动tomcat比用下面的配置启动tomcat快,原因很简单,因为下面配置是检查所有的类,当然很慢.第一种配置启动tomcat要80000ms,而第二种配置只需要25000ms就启动了.
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
http://hi.baidu.com/lk_well/item/19995d2051e7d9896f2cc34c点击打开链接