Hibrenate 連接 MySQL保存數據時候的亂碼問題

網上很多方法,實驗了,很少有成功的,弄了好久,總結如下:

MySQL的字符集支持(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。對於字符集的支持細化到四個層次: 

服務器(server),數據庫(database),數據表(table)和連接(connection)。

可以用:show variables like 'character%';查看字符編碼

            mysql> SHOW VARIABLES LIKE 'collation_%'; 查看系統排序方式的設定

mysql亂碼處理總結:
      (1)java中處理中文字符正常,在cmd client中顯示亂碼是字符集的問題.
       (2)字段長度設置夠長,但插入中文字符時提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column錯誤是字符集的問題.
       (3)亂碼問題歸根到底是字符集的問題,那就從字符集設置方面考慮,不外乎下面幾個方面:server,client,database,connection,results.

-------------------------解決辦法----------------------
(1)修改 my.ini(MySQL Server Instance Configuration 文件)
# CLIENT SECTION //客戶端
[client]
port=3306
[mysql]
default-character-set=gbk
# SERVER SECTION   //服務端
[mysqld]
default-character-set=gbk
(2)修改data目錄中相應數據庫目錄下的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
(3)數據庫連接串中指定字符集
URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode=true&characterEncoding=gbk 注:在mysql4.1.0版要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是沒有關係的!
(4)在創建數據庫時指定字符集
create database yourDB CHARACTER SET gbk;

(5)在dos命令上要設置

set names gbk
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等問題.

按照上面的方法,將MySQL 數據庫的sever , client , Connect 等的編碼設置成 gbk 可是用 Hibernate 向數據庫中插入依舊不能保持爲中文,必須在 Hibernate.cfg.xml 文件中 加一條語句

<property name="connection.characterEncoding">gbk</property>
至於深層次的東西,依舊不懂,還待進一一步研究,菜鳥先飛。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章