spring mvc 页面编码和数据库编码 中文出现乱码
1.前台与后台交互的时候,后台获取的中文为乱码,而且插入数据库数据也为乱码。
修改web.xml 添加编码的过滤器,全部设置为utf-8(注意加上forceEncoding)
<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> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.此时可实现后台代码获取到的中文正常,不出现乱码。但是如果插入数据库或者更新数据的时候,数据库内容为乱码的话,则为与数据库连接的时候,出现编码问题
在jdbc的url后面加上编码设置。
jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF-8
3.如果插入数据库数据在表格里面显示还是乱码,要看数据库的属性和表的属性是否为utf-8
所以查看mysql的编码
show variables like 'character%';
发现有几个编码格式不是utf8的, 修改
character_set_client gbk
character_set_connection gbk
character_set_database utf8
character_set_filesystem binary
character_set_results gbk
character_set_server utf8
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\
将里面的编码格式改成
SET character_set_client='utf8';
SET character_set_connection='utf8';
SET character_set_results='utf8'; 哪些不是就改哪,
也可以直接修改C:\Program Files\MySQL\MySQL Server 5.5\my.ini文
将里面的default-character-set改成utf8,注意是utf8 而不是utf-8
修改完之后,重启mysql服务。
以上部分知识来自:
http://blog.csdn.net/westsource/article/details/20922423
和