使用Hibernate向MySQL數(shù)據(jù)庫(kù)里寫(xiě)了數(shù)據(jù),全是亂碼:

mysql> select * from tbl_Category;
+----+--------------------+--------------------+----------+
| id | descr              | name               | parentId |
+----+--------------------+--------------------+----------+
|  1 | ????????????       | ????????????       |     NULL |
|  2 | ????????????       | ????????????       |     NULL |
|  3 | ????????????       | ????????????       |     NULL |
|  4 | ????????????       | ????????????       |     NULL |
|  5 | ????????????       | ????????????       |     NULL |
|  6 | ?????????????????? | ?????????????????? |     NULL |
+----+--------------------+--------------------+----------+
6 rows in set (0.10 sec)

為了能處理Unicode編碼,最好將數(shù)據(jù)庫(kù)庫(kù)的編碼設(shè)置為UTF8(這樣就可以不管是哪國(guó)文字都能正常顯示),連接時(shí)也用UTF8來(lái)處理。我們先查看當(dāng)前數(shù)據(jù)的編碼設(shè)置情況:
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
以上是未設(shè)置前的編碼情況,通過(guò)以下命令來(lái)設(shè)置編碼:
mysql> set character_set_client=utf8;
Query OK, 
0 rows affected (0.00 sec)
使用set命令將相應(yīng)的參數(shù)設(shè)置相應(yīng)的值,請(qǐng)自己一個(gè)一個(gè)設(shè)置,下面是設(shè)置好了的。
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
到此為止,MySQL數(shù)據(jù)庫(kù)編碼被我們?cè)O(shè)置好了。
在連接MySQL數(shù)據(jù)庫(kù)時(shí),使用如下連接串:
jdbc.url=jdbc:mysql://192.168.1.114:3306/szblcz?useUnicode=true&characterEncoding=UTF-8
我這里是配置在一個(gè)Properties文件里。useUnicode=true&characterEncoding=UTF-8 這兩個(gè)參數(shù)起到了至關(guān)重要的作用。
到這里一切再測(cè)試一下,應(yīng)該沒(méi)問(wèn)題了。