我的开发环境是eclipse+tomcat+mysql+hibernate,数据落地时发现中文都成了?,网上一搜,原因有很多,这边总结下,大家碰到可以按着一一排查:
一般编码都会常用UTF-8编码
1. 数据库编码
查看mysql数据的的编码,确实是utf-8
如果不是,将数据编码格式保存为utf-8
设置默认编码为utf8:
set names utf8;
设置数据库db_name默认为utf8:
2. 查看eclipse编辑器用的是UTF-8的编码
3. 查看project用的是UTF-8编码
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下的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删了重新加载,才起作用
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
这么多检查排查下来终于解决了,感谢大家的帮助!!!