今天遇到了个中文乱码问题。代码里面能够打印出JSP获取的中文值,但是写入数据库却是乱码...
首先我做了一下分析:
出现乱码的情况,主要是因为编码格式不统一,为此我检查了一边MYSQL的字符集 是否统一为UTF-8。
MYSQL 根目录的my.ini 文件default-character-set=utf8 。默认编码是否UTF-8
注意:修改了my.ini文件需要重启一下MYSQL . net stop mysql 停止/net shrat mysql 开启。
这两项做好后,根据JSP获取的中文值能正常打印、数据库的编码又是统一UTF-8.那么就有可能是因为写入数据库时候的格式不统一。
在网上查了一下,寻到一个Spring 自带的过滤器。
CharacterEncodingFilter 当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题,那这个类就可以出场了。
感谢jeiofw提供的转载资料。暂时还不知道原创是谁 同样感谢 .....
<filter>
2. <filter-name>encodingFilter</filter-name>
3. <filter-class>
4. org.springframework.web.filter.CharacterEncodingFilter
5. </filter-class>
6. <init-param>
7. <param-name>encoding</param-name>
8. <param-value>UTF-8</param-value>
9. </init-param>
10. <init-param>
11. <param-name>forceEncoding</param-name>
12. <param-value>false</param-value>
13. </init-param>
14. </filter>
15.16. <filter-mapping>
17. <filter-name>encodingFilter</filter-name>
18. <url-pattern>/*</url-pattern>
19. </filter-mapping>
将此过滤器在WEB.XML里面配置一下就成了。
xml 配置好了, JDBC连接数据库的hibernate.cfg.xml 也需要设置一下这个过滤器。
<property name="connection.url">jdbc:mysql://localhost:3306/test
?useUnicode=true&characterEncoding=UTF-8</property>
大功告成