在Java中解決MySQL5.0中文字符集問題全程詳細記錄
但是每個人的情況不總是一樣,所以我覺得我下面的文字有存在的必要。
下面的是我的痛苦的解決過程。
mysql> create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.14 sec)
插入的時候也用_gbk指定字符集,
mysql> insert a values(_gbk'默認數據庫的字符集和');
Query OK, 1 row affected (0.05 sec)
但是查詢的時候還是出現亂。
mysql> select * from a;
+--------------------------------+
| a |
+--------------------------------+
| 榛樿鏁版嵁搴撶殑瀛楃闆嗗拰 |
+--------------------------------+
1 row in set (0.00 sec)
mysql>
好的,那么是不是創建表也要指定字符集呢?
我們繼續測試:
mysql> create table b(a text) DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Query OK, 0 rows affected (0.06 sec)
Query OK, 1 row affected (0.01 sec)
+--------------------------------+
| a |
+--------------------------------+
| 榛樿鏁版嵁搴撶殑瀛楃闆嗗拰 |
+--------------------------------+
1 row in set (0.00 sec)
同樣出現亂碼?
我們不用_gbk指定字符集呢?
mysql> insert b values('默認數據庫的字符集和');
ERROR 1406 (22001): Data too long for column 'a' at row 1
mysql> insert a values('默認數據庫的字符集和');
ERROR 1406 (22001): Data too long for column 'a' at row 1
這樣發現根本就插入不進數據。
那么到底該怎么解決呢?
mysql> SET character_set_connection = gbk;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> SET collation_connection = gbk_bin;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> select * from a;
+----------------------+
| a |
+----------------------+
| 默認數據庫的字符集和 |
+----------------------+
1 row in set (0.00 sec)
+----------------------+
| a |
+----------------------+
| 默認數據庫的字符集和 |
+----------------------+
1 row in set (0.00 sec)
mysql> insert into a values('當然是聯系 java ');
Query OK, 1 row affected (0.02 sec)
+----------------------+
| a |
+----------------------+
| 默認數據庫的字符集和 |
| 當然是聯系 java |
+----------------------+
2 rows in set (0.00 sec)
最徹底的方法就是更改MySQL的配置文件。
default-character-set=utf8
default-character-set=utf8
改為:
default-character-set=gbk
default-character-set=gbk
重啟MySQL服務器。
重新連接:
mysql> select * from a;
+----------------------+
| a |
+----------------------+
| 默認數據庫的字符集和 |
| 當然是聯系 java |
+----------------------+
2 rows in set (0.02 sec)
看看插入中文字符情況:
mysql> insert b values('看看插入中文字符情況:');
Query OK, 1 row affected (0.03 sec)
+------------------------+
| a |
+------------------------+
| 默認數據庫的字符集和 |
| 看看插入中文字符情況: |
+------------------------+
2 rows in set (0.00 sec)
Query OK, 0 rows affected (0.06 sec)
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.02 sec)
+--------------------------+
| a |
+--------------------------+
| NULL |
| 下面再看看創建表的情況: |
+--------------------------+
2 rows in set (0.00 sec)
|
運行輸出:
success loading mysql Driver....
插入中文字符到數據庫成功!
ID
title
content
author
time
modifyTime
1 大家好! 我是新來,請多多關照! zieckey 2007-01-28 20:03:50.0 2007-01-27 20:03:50.0
posted on 2009-06-23 13:22 肥仔 閱讀(545) 評論(0) 編輯 收藏 引用 所屬分類: Web-后臺