MySQL4.1是比較煩人.支持多語言的細化設置.再加上PHPMyadmin-2.6也比較笨.默認就是改不動的UTF-8.怎麼弄都亂碼.好了.廢話少說.我們來一步步解決這個問題:
1. 修改/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
2. 命令 /etc/init.d/MySQLd restart 重新啟動MySQL.
3. 打開PHPMyadmin. 選擇Lang為"Chines simplifIEs(zh-utf-8)". 選擇"MySQL連接校對為utf8_general_ci". 點"服務器變量和設置". 可以看到:
character set clIEnt utf8 utf8
character set connection utf8 utf8
character set database utf8 utf8
character set results utf8 utf8
character set server utf8 utf8
character set system utf8 utf8
collation connection utf8_general_ci utf8_general_ci
collation database utf8_general_ci utf8_general_ci
collation server utf8_general_ci utf8_general_ci
從這裡可以看到character全部變成UTF-8了.
為什麼都要改成UTF-8呢?改成GB2312不行嗎?解釋如下:
我也不想改成UTF-8. 只是PhpMyadmin 2.6在MySQL 4.1的時候只會用UTF-8. 連其他頁面的charset也都是UTF-8. 改成GB23122一定會亂碼. 我們只能湊PhpMyadmin了. 只有在MySQL 3.23的時候PHPMyadmin才會多一個GB2312的頁面charset.這時候是正常的.
3. 將以前的MySQL 3.23的庫文件導入MySQL 4.1的庫.有兩種情況:
一是從PHPMyadmin上導入. 這時候你要注意的是在選擇庫文件的頁面左下腳有個"文件的字符集:". 默認是UTF-8. 要改成Gb23122. 否則導進去亂碼.
二是在Linux下導入.這時候你需要先在庫文件的頭部加一行:
SET NAMES 'gb2312';
注意最後也是;號. 別漏了. 然後執行: MySQ -u 用戶名 -p 密碼 xxx.sql > 庫名
導入完成以後再用PHPMyadmin打開看. 裡面的中文字就是正確的.
4.從MySQL 4.1裡導出庫文件
一.用PhpMyadmin導出.導出倒是問題不大.如果PHPMyadmin的浏覽頁面裡顯示的中文是正常的.那麼導出肯定也是正常的.
二.在Linux上導出.如果用MySQLdump導出出現了亂碼也沒有關系.可以運行iconv來轉換一下:
iconv -c -f UTF-8 -t GB2312 庫文件名 > 新的Gb2312的庫文件名
綜上所述.需要注意:
1. 盡量在需要導入的庫文件的開頭加入 SET NAMES 'Gb2312'; 告訴MySQLl你要導入的是一個Gb2312的文件.
2. 可能你需要這個: SET NAMES 'utf8'; 在登陸到MySQL後用.
3. 把character的一些默認參數改到UTF-8上.有時可以減少一些困擾.不過也不是必須的.
4. 在MySQL上使用: SHOW VARIABLES LIKE 'character_set_%'; 用來查看當前的狀態.
5. 如果出現亂碼也不要怕.一是你要注意留存原有的備份.二是用iconv來進行轉化.