在 Web 项目中,由于各种诸如前后端或者项目与数据库编码不一致等原因都会造成中文乱码的问题,本文介绍了在项目中保持编码一致的方式,解决乱码的问题。
1. 项目内配置
1.1 web.xml 配置过滤器
web.xml 是项目中配置文件的起始部分,为了保险,应该在第一个 filter 里配置编码,配置方式如下:
1234567891011121314151617
encoding-filter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encoding-filter
/*
1.2 前端页面
如果你的前端页面采用 JSP 或者 VM,则应设置页面的编码格式为 UTF-8 的形式。
1.3 前后端交互
对于前后端交互的方式也可设置编码格式,对于前端向后段传输数据时,可以设置 http 的 header 请求方式:
1
Content-Type: text/html; charset=utf-8
如果你是采用 JQuery 中 ajax 的方式提交给服务端,则应该如下方式设置请求:
1
Content-Type: application/json; charset="utf-8"
服务端返回数据给前端,如果是采用 html 的形式:
1
response.setContentType("text/html;charset=utf-8");
如果是采用 JSON 的形式:
1
response.setContentType("application/json;charset=utf-8");
2. Tomcat/JVM 配置
如果你发现前端页面或者数据库的编码显示都正常,但是 System.out.println() 输出时会有乱码,则有可能是容器(Tomcat)中配置 JVM 的参数有问题,只需要在 Tomcat 的配置文件中在 JVM 参数 JAVA_OPTS 或者 CATALINA_OPTS 中加上:
1
-Dfile.encoding=UTF-8
使得 JVM 也以 UTF-8 的方式编码。
3. 数据库配置
3.1 数据库配置文件
当你的前端页面和后台服务器中都解决了编码问题,但是插入数据库或者读取数据库时有问题,就应该考虑数据库的编码方式。对于 MySql 数据库而言,首先找到安装文件 my.ini,设置数据库本身的编码:
12345
[client]default-character-set=utf8在[mysqld]下添加character-set-server=utf8
重启 MySql 即可生效,可以以如下的方式查看 MySql 的编码方式:
1
mysql> show variables like "%char%";
3.2 查询语句
对于在项目中配置的数据库 URL,这是数据库与你的项目交互的编码方式,也要设置编码:
1
jdbc:mysql://XX:3306/XX?useUnicode=true&characterEncoding=UTF-8
4. 总结
如果你的项目中出现了编码问题,正常情况下不会逃出以上三个部分,解决了恶心的编码问题,以后都会有乱码的困扰啦!
以上内容就是彻底解决项目中的中文乱码问题的全部内容了,谢谢你阅读到了这里!
Author: zhaoyh
本文详细阐述了如何解决Web项目在项目内配置、Tomcat/JVM设置以及数据库配置中遇到的中文乱码问题。通过调整web.xml的过滤器、设置前端页面和前后端交互的编码格式、修改Tomcat的JVM参数以及配置数据库的字符集,确保项目全程使用UTF-8编码,从而避免乱码现象。
2084

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



