MySQL數據庫中文亂碼問題



在安裝mysql數據庫時忽略了編碼選擇,所以修改編碼即可。

找到安裝目錄,例如:C:/Program Files/MySQL/MySQL Server 5.0,這也是默認安裝目錄。

然後找到my.ini文件,可能你的系統隱藏了後綴名,那就是找到文件my。

打開my.ini進行編輯,找到“default-character-set=latin1”,有兩行,修改成“default-character-set=gbk”即可。

重新啓動MySQL數據庫服務,重新建有亂碼的數據庫表。


1:windows平臺,因爲windows操作系統默認的是用了gb2312這個字符,而mysql在安裝的時候,


  默認的是客戶端和服務器都用了latin1,所以這就導致一個字符集和字符校驗不匹配的問題,


  這個時候只需要找到mysql的配置文件my.ini 找到default-character_set ,把他的參數改


  成gb2312就可以了,一共有兩個這樣的參數,一個是對客戶的,一個是服務器的,我一般建


  議是把服務器的設置成國際通用的字符utf8。
  2: linux平臺,在linux平臺上安裝mysql的時候,給於的自由度是很大的,你可以在安裝


  選項./configure中找到數據庫的字符設置(這個還要麻煩你自己看readme安裝文件 ),這個時


  候最好是把字符設置成gbk,因爲這個字符集也是linux平臺默認安裝的中文字符集,然後


  在/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)


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