关于mysql的乱码问题以及mysql与项目协作时出现的乱码问题,今天有同事问起,也因此回顾了一下以往的解决思路并收集起来整理如下
1. 找到mysql在本地的安装目录,如d:/program files/mysql/mysql 5.0下,找到my.cnf文件,作如下修改:
在[client]及[mysqld]分支下分别加入以下内容 default-character-set = utf8
2. 建表时,在建表脚本结尾加“ENGINE=InnoDB DEFAULT character SET=utf8”
3. 在web.xml中添加filter,具体配置如下:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class> classmate.database.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<!-- Filter Mapping -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
至于这里出现的SetCharacterEncodingFilter类,已超出本文范围不作描述,随便google一下就有结果
4. 项目中jsp字符集格式须统一为utf-8格式,对于xml文件的字符集没有特定要求
5. 服务端的请求字符集格式设置,如
response.setContentType("text/html;charset=UTF-8") //这条语句慎用
request.setCharacterEncoding("UTF-8")
6. 对于ajax,页面脚本如果需要上传大数据量,例如用xmldoc来包装,则需要在xml中指定字符集