web project中,有很多地方都会设置字符集,最好统一,不然出错的时候就不好找了,都以utf8为例,这是我最喜欢的字符集
,让我们看看都哪些地方设置了字符集。
首先,mysql服务端,在安装后的配置阶段,最好就把字符集设置为utf8,它默认的是latin1,经常乱码。。。在安装的地方,找到my.ini,有两处字符集的地方,修改一下也可以。
然后,是sqlyog,sql的客户端,很好用,不过用时间长了,发现sql语句都不会怎么写了,还得复习一下,这个改字符集,我查了好久,软件用的不是很熟啊。。。在创建表的时候,下面有个按钮“advanced properties”,在这里修改字符集为utf8.
sql端的设置完毕,就到项目中的字符集了。首先,在jsp页面中,最前面要加上这样一句话:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>,否则保存的时候可能就会报错,因为不识别页面中的中文。
页面搞定以后,就是配置文件了。
applicationContext.xml中,连接数据库的地方,为了以防万一,连接时出错,还是加上字符集比较好。
<property name="url"
value="jdbc:mysql://localhost:3306/mmcwz?useUnicode=true&characterEncoding=UTF-8">
</property>
struts-config.xml中,上面会有这样的话:
<?xml version="1.0" encoding="UTF-8"?>是自动生成的
web.xml中,很重要的设置,过滤器的设置。
<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>
</filter>
这些都搞定以后,应该就没有问题了。当出现问的时候,要找出哪一步出现了问题,就像刚刚,我在mysql中,use mmcwz,select * from announcementinfo;取出来的表中数据就已经是乱码了,说明是sqlyog和mysql字符集不一致,之后,show create table announcementinfo,发现charset竟然是gbk,这样就找到问题了。也可以在java文件中插桩,如果发现乱码,可能就是配置的问题或者页面设置的问题。