mysql 4.1及以後的版本開始支援多語言,這個所謂的多語言,就是在輸入輸出時mysql會替你做編碼轉換。而這個轉換規則就是由客戶端編碼和伺服器端編碼來決定的。
編碼轉換的規則就是:在輸入資料時將編碼由「客戶端編碼」轉換為「伺服器端編碼」,輸出時將資料由「伺服器端編碼」轉換為「客戶端編碼」。
mysql> show variables like"%char%";
| variable_name | value |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
字段含義:
character_set_client 客戶端字符集
character_set_connection 客戶端與伺服器端連線採用的字符集
character_set_results select查詢返回資料的字符集
character_set_database 資料庫採用的字符集
所以解決問題的思路就是:讓伺服器端和客戶端的字符集保持一致。
可以使用
setnames utf8;
設定當前
session
的預設編碼格式。執行這一命令相當於執行了:
setcharacter_set_client='utf8';
set character_set_connection='utf8';
set character_set_results='utf8';
也可以在網頁或
php**中加上乙個
"setnames utf8"
指令,告訴
mysql
連線內容都要使用
utf8
。然後再執行其他
sql。
如果想要修改客戶端的預設編碼格式,見後面對
/etc/my.cnf
的修改。
[mysql]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# disabling symbolic-links is recommendedto prevent assorted security risks
symbolic-links=0
log=/var/log/mysqld/mysqld-all.log
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
可以檢視所有支援的編碼格式:
showcharacter set;
現在再執行show variables like "%char%";檢視的話,所有編碼格式都應該預設為utf-8了。
匯入資料時指定編碼
mysql--default-character-set=utf8 -d limesurvey < limesurvey.sql
匯出資料時指定編碼
mysqldump--default-character-set=utf8 limesurvey > 111.sql
1 mysql亂碼問題深層分析
2 mysql匯入匯出資料中文亂碼解決方法小結
3 mysql中文亂碼問題完美解決方案
MySQL導致的中文亂碼問題解決
開發的時候,切換資料庫之後導致中文亂碼,以為是查出的資料編碼格式不對。寫了一堆轉換字串編碼的sql。官方文件 select charset 中文 charset convert 中文 using gbk 之後發現是切換資料庫之後出現的這個問題,然後就檢視兩個資料庫的區別。下面是出現問題的資料庫。標紅...
MySQL中文亂碼問題解決方案
1 linux 中 mysql 出現中文亂碼問題如下操作 編輯vi etc my.cnf 檔案,新增圖中標記三行 client default character set utf8 mysqld character set server utf8 mysql default characterwww...
Linux Oracle 中文亂碼問題解決
一 若在oracle中有漢字,在資料庫中查詢出現亂碼很可能是由於資料庫客戶端與伺服器的字符集不一致導致的,這時就應該先分別檢視下資料庫伺服器和客戶端的字符集 具體命令如下 1.檢視伺服器端的字符集 sql select userenv language from dual 2.檢視客戶端的字符集 e...