資料庫中文亂碼解決方案總結,tomcat+mysql+hibernate
我的開發環境是eclipse+tomcat+mysql+hibernate,資料落地時發現中文都成了?,網上一搜,原因有很多,這邊總結下,大家碰到可以按著一一排查:
一般編碼都會常用UTF-8編碼
1. 資料庫編碼
檢視mysql資料的的編碼,確實是utf-8
如果不是,將資料編碼格式儲存為utf-8
設定預設編碼為utf8:
set names utf8;
設定資料庫db_name預設為utf8:
- ALTERDATABASE `db_name` DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;
- ALTERTABLE `tb_name` DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;
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
這麼多檢查排查下來終於解決了,感謝大家的幫助!!!