使用Hibernate向MySQL數(shù)據(jù)庫里寫了數(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ù)庫庫的編碼設(shè)置為UTF8(這樣就可以不管是哪國文字都能正常顯示),連接時也用UTF8來處理。我們先查看當前數(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è)置前的編碼情況,通過以下命令來設(shè)置編碼:
mysql> set character_set_client=utf8;
Query OK, 
0 rows affected (0.00 sec)
使用set命令將相應(yīng)的參數(shù)設(shè)置相應(yīng)的值,請自己一個一個設(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ù)庫編碼被我們設(shè)置好了。
在連接MySQL數(shù)據(jù)庫時,使用如下連接串:
jdbc.url=jdbc:mysql://192.168.1.114:3306/szblcz?useUnicode=true&characterEncoding=UTF-8
我這里是配置在一個Properties文件里。useUnicode=true&characterEncoding=UTF-8 這兩個參數(shù)起到了至關(guān)重要的作用。
到這里一切再測試一下,應(yīng)該沒問題了。