亂碼問題其實歸根接地就是兩端的字符集不統一。
解決思路也有兩種:
1. 修改兩端字符集統一。
2. 通過代碼進行轉碼,從而達到字符集的統一。
在Mysql中,默認使用的字符集是latin1(拉丁文),所以我會在建立數據庫時,將數據庫默認編碼設置為utf-8.
對於亂碼的解決思路,
1. 查看在插入數據庫前,數據的實際內容,如果已經是亂碼了,那麼就是代碼中有錯誤,和數據庫是無關的。
2. 查看數據庫中的數據,如果是亂碼,那麼一般情況下,就是由於數據庫和輸入端的字符集不統一導致的。
3. 檢查數據庫字符集,和java的數據集
4. 修改一方
在配置文件中設置(xml)
<property name="connection.useUnicode">true</property> <property name="connection.characterEncoding">UTF-8</property>
在連接字符串設置
properties: url=jdbc:mysql://localhost:3306/msms?useUnicode=true&characterEncoding=utf-8 xml: <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"></property>
mysql字符集設置
查看字符集 show variables like ‘character%’ 設置字符集 set character_set_database = utf8; 修改表的字符集 ALTER TABLE hibernate1.news CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 查看表信息 SELECT * FROM information_schema.tables WHERE table_schema = ‘test_utf8’ ORDER BY table_name DESC;