Hibernate對mysql操作時的編碼問題
阿新 • • 發佈:2018-12-15
我的專案中使用的是hibernate框架操作資料庫,顯示資料庫的資料一切正常,但是在執行新增、修改、搜尋的時候,中文字元都出現亂碼,新增的是亂碼的記錄,模糊查詢的中文搜尋查不出來資料。直到我修改完編碼格式才恢復正常。
1、用eclipse啟動專案時報錯,啟動超過45秒,無法啟動成功
找到eclipse的工作空間workspace,開啟下面的.metadata檔案,再找到下面的.plugins檔案,找到org.eclipse.wst.server.core檔案,開啟servers.xml檔案
檔案中有個屬性 start-timeout="45" 代表啟動如果超過45秒,就會報錯。可以修改到更大的數值,如150或者200秒
2、要修改eclipse中的編碼格式
file--properies----Resource中有一個編碼格式:other修改為utf8
右鍵單擊專案---properties---Resource/Java Build Path/Java Compiler
Window----preferences-----General和XML都要選擇編碼格式,General下面的workspace
3、修改資料庫的編碼格式
新建資料庫的時候編碼格式選擇utf8,排序規則選擇utf8_general_ci
4、修改mysql的安裝檔案my.ini中的編碼格式,預設為latin1
開啟mysql的安裝目錄,找到my.ini或者my_default.ini
新版本的mysql可能在mysql安裝目錄下沒有my.ini檔案,安裝到了另外一個目錄下,找到c:ProgramData---mysql--mysql Server 5.7,下面就有。
在[client]下新增:
default-character-set=utf8
在[mysqld]下新增:default-character-set=utf8
或者修改default-character-set=utf8
5、修改專案中連線資料庫的配置檔案的編碼格式
在jdbc.properties中配置jdbc.url=jdbc:mysql://localhost:3306/nsfw?useUnicode=true&characterEncoding=UTF-8
要加上後面的編碼格式
6、修改hibernate配置檔案中的編碼格式hibernate.cfg.xml
在connection.url後面也要加上編碼格式
<property name="connection.url">
jdbc:mysql://localhost:3306/tansinglepage?useUnicode=true&characterEncoding=UTF-8
</property>
或者: <!-- 設定編碼格式 -->
<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
jdbc:mysql://localhost:3306/tansinglepage?useUnicode=true&characterEncoding=UTF-8
</property>
或者: <!-- 設定編碼格式 -->
<property name="hibernate.connection.useUnicode">true</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<!-- 配置方言 -->
<property name="hibernate.dialect">com.shzy.dialect.CustomerDialect</property>
重啟專案 別忘了url後面加的?useUnicode=true&characterEncoding=utf8