SSM项目经常遇到的乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM项目经常遇到的乱码问题相关的知识,希望对你有一定的参考价值。

开发时使用jetty一切正常的项目,部署到linux中tomcat下,卧槽,各种乱码问题,记录一下解决过程:

1. 路径上有中文无法打开,是因为tomcat不支持

修改conf/server.xml,添加URIEncoding(搜索port="8080")

  

 <Connector port="8080" protocol="HTTP/1.1"

            connectionTimeout="20000"

            redirectPort="8443"

         URIEncoding="UTF-8"/>

2. form提交后,(springmvc)后台接受到乱码

web.xml添加过滤器:

<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>

3. Mybaits中文查不出数据

使用 类似Mybatis查询在语句select..from.. where s.username= #{username} 查询条件查询

传入username的是中文,在数据库中可以正常查询出来,但是mybatis查不出来(执行查询结果显示返回0条数据),折腾了很久,怀疑还是编码问题导致。

以下是网上找到的解决办法,果然有效! (个人安装的my.cnf文件只有mysqld选项,所以只要在[mysqld]下添加一行default-character-set=utf8就行)

估计数据库编码是latin的吧,最终找到原因,数据库安装后,编码没设置,设置成utf-8就好了,修改配置文件,最简单的完美修改方法,修改mysqlmy.cnf文件中的字符集键值(注意配置的字段细节):

1、在[client]字段里加入default-character-set=utf8,如下:

 

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

2、在[mysqld]字段里加入character-set-server=utf8,如下:

 

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

3、在[mysql]字段里加入default-character-set=utf8,如下:

[mysql]
no-auto-rehash
default-character-set=utf8

修改完成后,service mysql restart重启mysql服务就生效。

 

再一查询OK

 

 

4.其他应该注意的地方

在springmvc配置中有编码配置的地方,一律UTF-8

还有JSP中不要忘记修改:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

 


以上是关于SSM项目经常遇到的乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决tomcat启动 ssm项目出现乱码

Eclipse中java代码注释变成乱码的问题

idea ssm项目出现日志中文乱码,封装的json中的msg字段中文乱码(但是json封装的bean中的字段不乱码)等其他各种项目下的中文乱码解决方案

ssm中从页面到controller和数据库出现乱码问题的解决

Qt中文乱码解决思路

freemarker页面中文乱码