相信MySQL新手在剛接觸MySQL時總會遇到中文亂碼的問題,如ERROR 1366 (HY000): Incorrect string value。作為新手,我也遇到過。不過以前沒系統地找過解決方法,最近因為Linux要安裝MySQL,我遇到了在MySQL指令行中中文不能輸入和中文亂碼的問題,就查找解決方法解決,順帶把windows系統中文亂碼的問題給解決了。下面我将分别介紹如何在Windows和Linux系統解決類似的問題。
一. Windows環境下:
在mysql安裝目錄下找到my.ini檔案,注意是安裝目錄下,而不是安裝目錄下的bin目錄下,否則修改了也不會生效。我就犯了這樣的錯誤。如果安裝目錄下沒有,就把my-medium.ini複制(注意是複制,不要覆寫或删除掉,以防可能出現未知的錯誤)重命名為my.ini,然後做如下添加:
[client]
default-character-set=utf8
[mysqld]
collation-server=utf8_general_ci
character_set_server=utf8
[mysql]
default-character-set=utf8
然後重新開機mysql服務(net start mysql)即可。在指令行輸入status或show variables like 'character%';發現編碼方式變成了utf8。

二. Linux環境下:(注:我的系統是Centos7.2 64位,用RPM方式安裝的MySQL,不一樣的系統和安裝方式可能處理方法不一樣。)
mysql不支援輸入中文的解決方法:可能是因為shell不支援中文,這是Linux環境配置問題,需要打開locale.conf檔案,即vim /etc/locale.conf,然後做如下修改:
。
mysql中文亂碼出現ERROR 1366 (HY000): Incorrect string value錯誤解決方法:
1.直接解決方法通過改配置檔案:
#vim /etc/my.cnf(5.5以後MySQL) 做如下添加:
[client]
port=3306
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server=utf8_general_ci
character_set_server=utf8
然後重新開機mysql服務,在指令行輸入status或show variables like 'character%';發現編碼方式變成了utf8。
2.間接解決方法通過修改資料庫、表的編碼方式
建表之前指定編碼方式:create table tablename (...) default charset=utf8
改變已建立的資料庫:alter database databasename character set utf8;
改變已建立的表:alter table tablename convert to character set utf8;