1. 程式人生 > >資料庫中文亂碼解決方案總結,tomcat+mysql+hibernate

資料庫中文亂碼解決方案總結,tomcat+mysql+hibernate

我的開發環境是eclipse+tomcat+mysql+hibernate,資料落地時發現中文都成了?,網上一搜,原因有很多,這邊總結下,大家碰到可以按著一一排查:

一般編碼都會常用UTF-8編碼

1. 資料庫編碼

檢視mysql資料的的編碼,確實是utf-8


如果不是,將資料編碼格式儲存為utf-8

設定預設編碼為utf8:
set names utf8;
設定資料庫db_name預設為utf8:

  1. ALTERDATABASE `db_name` DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;  
設定表tb_name預設編碼為utf8:

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

這麼多檢查排查下來終於解決了,感謝大家的幫助!!!