一)不能顯示中文解決辦法:html
參考:http://bbs3.chinaunix.net/thread-880131-1-1.htmlmysql
1:windows平臺,由於windows操做系統默認的是用了gb2312這個字符,而mysql在安裝的時候,linux
默認的是客戶端和服務器都用了latin1,因此這就致使一個字符集和字符校驗不匹配的問題,sql
這個時候只須要找到mysql的配置文件my.ini 找到default-character_set ,把他的參數改數據庫
成gb2312就能夠了,一共有兩個這樣的參數,一個是對客戶的,一個是服務器的,我通常建windows
議是把服務器的設置成國際通用的字符utf8。
2: linux平臺,在linux平臺上安裝mysql的時候,給於的自由度是很大的,你能夠在安裝服務器
選項./configure中找到數據庫的字符設置(這個還要麻煩你本身看readme安裝文件 ),這個時工具
候最好是把字符設置成gbk,由於這個字符集也是linux平臺默認安裝的中文字符集,而後spa
在/etc下找到my.cnf文件(這個文件在安裝mysql後要本身把他轉移到/etc/下,除非你是操作系統
rpm安裝).須要注意的是linux裏的不少工具都是不支持中文的,哪怕是vi,你能夠在startx
後執行命令kwrite,來編譯文件,這個圖形變異軟件有一個選項是能夠把你所寫的東西轉換
成任意的字符集,很不錯,
二)不能插入中文解決辦法:
參考:http://blog.csdn.net/ancky_zhang/archive/2008/10/15/3078540.aspx
查看錶的結構:
mysql> show create users;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'users
' at line 1
mysql> show create table users;
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
| users | CREATE TABLE `users` (
`userid` int(11) default NULL,
`username` char(20) character set latin1 default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+-----------------------------------------------------------------------
------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> desc users;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| userid | int(11) | YES | | NULL | |
| username | char(20) | YES | | NULL | |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)
這時向表中插入中文而後有錯誤。
mysql> insert into users values(88,'中文');
ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern
ame' at row 1
mysql> insert into users values(88,'中文');
ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern
ame' at row 1
還要更改users表的username的字符集。
mysql> alter table users modify username char(20) character set gbk;
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern
ame' at row 1
mysql> alter table users modify username char(20) character set gbk;
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern
ame' at row 1
由於表中已經有數據,因此更改username字符集的操做沒有成功
清空users表中的數據
mysql> truncate table users;
Query OK, 3 rows affected (0.01 sec)
重新更改user表中username的字符集
mysql> alter table users modify username char(20) character set gbk;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
這時再插入中文字符,插入成功。 mysql> insert into users values(88,'中文'); Query OK, 1 row affected (0.01 sec) mysql> select * from users; +--------+----------+ | userid | username | +--------+----------+ | 88 | 中文 | +--------+----------+ 1 row in set (0.00 sec)