MySQL 4.1 強化多語言支援,預設字元集為 UTF-8。phpMyAdmin 2.6 強制 UTF-8 介面,若資料實為 Big5/GB2312,全鏈路不一致必然亂碼。
/etc/my.cnf[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
關鍵:default-character-set=utf8
/etc/init.d/mysqld restart
Chinese Simplified (zh-utf-8)utf8_general_cicharacter_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
phpMyAdmin 2.6 在 MySQL 4.1 下僅支援 UTF-8 介面,強制改其他字元集反而亂碼。MySQL 3.23 時代 phpMyAdmin 才有 Big5 選項。
匯入頁面左下角 「檔案字元集」 選 GB2312 或 Big5 (預設 UTF-8 會亂碼)
在 SQL 檔案最前面加入:
SET NAMES 'gb2312';
再執行:
mysql -u 用戶 -p 密碼 資料庫名 < 檔案.sql
iconv 轉碼iconv -c -f UTF-8 -t GB2312 舊檔.sql > 新檔_gb2312.sql
| 用途 | 指令 |
|---|---|
| 連線後設定字元集 | SET NAMES 'utf8'; 或 SET NAMES 'gb2312'; |
| 檢視目前字元集狀態 | SHOW VARIABLES LIKE 'character_set_%'; |
| 匯入前聲明編碼 | SQL檔首行加 SET NAMES 'gb2312'; |
| 檔案編碼轉換 | iconv -c -f UTF-8 -t GB2312 ... |
SET NAMES 或 phpMyAdmin 選正確字元集iconv 救援