今天遇到了乱码问题,保存到mysql数据库的中文变成了问号(?)。折腾了老半天才搞定,现将解决方法记录如下。
首先在web.xml最上面位置配置过滤器:
<filter>此过滤器只针对post方法有效。forceEncoding的作用是忽略来源编码(不管编码没有),强制以目标编码为编码格式。
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
然后去修改数据库、表中列的编码格式为utf8:
最后设置数据源的编码格式:
<property name="url" value="jdbc:mysql://121.40.90.125/test?useUnicode=true&characterEncoding=utf-8"></property>如此保存到数据库的中文乱码问题就解决了。