想必做J2EE的程序员们都知道,无论是服务器(主要指Linxu/Unix)上的部署还是页面的中文显示,乱码问题一直都是很让人头痛的问题。其实原因很简单,洋鬼子们的东西默认都是UTF-8编码的,而我们的中文是GB2312编码的。这里我给大家介绍的是Struts、Sping、Hibernate架构(简称SSH架构)在Mysql数据库中解决中文乱码的问题,因为这个架构比较流行,所以我就拿这个架构作个例子,其实我这个方法是个通用的方法,对Spring的MVC架构(JSTL、Spring、Hibernate)也试用。
在开始切入正题之前我在插一句,因为UTF-8编码是国际编码,所以我们只要把所有需要改编码的地方都改成UTF-8编码(包括页面文件编码)就会完全解决编码问题了。OK 开始......
首先,需要在web.xml文件中加入<filter>过滤器,用spring-web.jar包中的CharacterEncodingFilter类(这个类在Eclipse导入Spring支持的时候就有了)把所有字符编码都过滤成UTF-8的,请看代码例子......
以下是web.xml代码片段:
<filter>
<filter-name>EncodingFilter</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> |
以下是applicationContext.xml代码片段:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>123</value>
</property>
</bean> |
我使用的Mysql工具是 MySQL-Front,用这个工具把数据库中所有需要改变编码的地方都改成UTF-8的,这样在MySQL-Front下看到的中文就是正常的了,不然还是要出现乱码的。
请做如下更改:
1.右键你的数据库,选择属性,然后把字符集改成UTF-8的
2.右键你数据库中的表,选择属性,把字符集也改成UTF-8的
这样数据库的编码设置就可以了,表中的字段编码不需要改变的。
注意:还没完呢,还有最后一个过程,那就是你需要把所有的页面文件属性也改成UTF-8的,我是用Editplus 2把所有页面通过另存为的方法改变的
总算写完了,但是千万别忘了在写代码的时候加上头文件哦
以下是页面代码片段:
<%@ page language="java" pageEncoding="utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
转载于:https://blog.51cto.com/dason/360816