数据库中文乱码解决方案总结,tomcat+mysql+hibernate

时间:2020-12-30 06:43:41

我的开发环境是eclipse+tomcat+mysql+hibernate,数据落地时发现中文都成了?,网上一搜,原因有很多,这边总结下,大家碰到可以按着一一排查:


一般编码都会常用UTF-8编码


1. 数据库编码

查看mysql数据的的编码,确实是utf-8

数据库中文乱码解决方案总结,tomcat+mysql+hibernate

如果不是,将数据编码格式保存为utf-8

设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:

[sql] view plain copy
  1. ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  
设置表tb_name默认编码为utf8:
[sql] view plain copy
  1. ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  

数据库中文乱码解决方案总结,tomcat+mysql+hibernate2. 查看eclipse编辑器用的是UTF-8的编码

数据库中文乱码解决方案总结,tomcat+mysql+hibernate


3. 查看project用的是UTF-8编码

数据库中文乱码解决方案总结,tomcat+mysql+hibernate


4. 查看html中选的是utf编码

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


5. 查看ORM框架用的是utf-8编码

我用的是hibernate框架,查看hibernate.cfg.xml文件

<property name="connection.characterEncoding">UTF-8</property>


6. 查看tomcat的编码

数据库中文乱码解决方案总结,tomcat+mysql+hibernate

找到tomcat下的server.xml文件


 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

改成

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

如果是在eclipse中运行tomcat,重启tomcat还不起作用,要把项目中server删了重新加载,才起作用

数据库中文乱码解决方案总结,tomcat+mysql+hibernate


7. 数据库连接语句

db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
db.username=root
db.password=123456


这么多检查排查下来终于解决了,感谢大家的帮助!!!