在做一个SSM的项目的时候,数据库用的是MYSQL, 数据库中存储的中文字符取出来的时候和存进去的中文字符变成了问号或者乱码字符。
乱码问题出现的情况有很多种,针对web开发这一流程来说,可以根据数据的流向来定位乱码出现的位置。前台发起一个请求,数据通过http协议到后被接收,这里数据会进行一次编码,在ssm环境下,是springMVC来拦截请求进行处理,所以在springMVC中能配置数据的编码格式,springMVC提供的是一个filter,在web.xml中配置
<!-- 编码过滤器 -->
<filter>
<filter-name>springfilter</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>
<filter-mapping>
<filter-name>springfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果经springMVC拦截的中文参数没有出现乱码,则说明这里的编码没有出现问题,然后进一步去分析数据的流向。ssm的环境下是mybatis框架与数据库进行交互,mybatis本身对数据不会进行编码,但是在与数据库交互的时候会有编码的问题,比如在jdbc配置的时候,数据库连接这里有一个编码的参数需要配置。
url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=UTF-8 在所连接的数据库后边添加useUnicode=true&characterEncoding=UTF-8
如果以上的配置都确定没有问题和,那么很大可能性就是数据库乱码了,在新建数据库的时候需要选择一个数据的编码方式。
或者在spring的配置文件applicationContext.xml中的配置数据源中的数据库url地址时加上?characterEncoding=utf8后解决了这个问题。
?characterEncoding=utf8
本文详细介绍了在使用SSM框架的项目中遇到的中文乱码问题及其解决方案。从springMVC的CharacterEncodingFilter配置,到JDBC连接字符串中的characterEncoding参数调整,再到数据库的编码设置,全面覆盖了从前端到后端可能引发乱码的各个环节。
1067

被折叠的 条评论
为什么被折叠?



