最近在做系統的轉換!主要轉換目標是將MySQL由3.x.x版轉換至5.x.x版,『順便』將站台UTF-8化,並將Windows Platform的Web站台一併轉換至Linux Platform,雖然已經想轉很久了,但一直到最近才開始動工!(沒辦法!我生性懶散!)
在轉換的過程中當然會碰上許多問題,尤其是語系編碼的問題,早已耳聞許多前輩的不順!但出來跑遲早要還的!所以還是開始慢慢的準備我轉換的辛酸過程!當然在轉移中所碰到的困難都能使我學習到許多寶貴的經驗,我想這是此次migration的最大收獲!
此圖為MySQL AB.所提供的MySQL Migration Toolkit,可以方便且快速從的Oracle, Microsoft SQL Server, Microsoft Access移轉至MySQL!
這篇就先來記錄此次migration MySQL所遇到的語系設定問題,雖然網路上已有許多此類的文章,但還是寫寫以防未來忘記還要再去搜尋的麻煩!
第一個碰上的問題就是由MySQL所撈出來的資料會出現亂碼,處理的方式如下:
一、此方式不需動到伺服器上的設定!
1. 將檔案存成UNIX UTF-8格式
2. php header
header(‘Content-type: text/html; charset=utf-8’);
header(‘Vary: Accept-Language’);
3. meta content
4. mysql connect後的處理方式
mysql_query(“SET NAMES utf8″);
mysql_query(“SET CHARACTER_SET_CLIENT=utf8″);
mysql_query(“SET CHARACTER_SET_RESULTS=utf8″);
5.table校對需設為utf8_unicode_ci
二、直接設定伺服器上的設定!(如此就可以不需使用上述方式,但站台會全部UTF-8化)
1. 將檔案存成UNIX UTF-8格式
2. 在httpd.conf設定Apache的語系
AddDefaultCharset UTF-8
3. 在php.ini設定php的語系
default_charset = “utf-8″
4. 在my.cnf 設定MySQL的語系
[mysqld]
init_connect=’SET NAMES utf8′
default-character-set=utf8
[client]
default-character-set = utf8
5.table校對需設為utf8_unicode_ci
考量到其他站台相容性的問題我最後還是選擇了第一種方式!而第一種方式也適合租用虛擬主機的朋友!他保留了些許的彈性讓不想UTF-8化的朋友們還可以繼續使用,但若使用第二種方式就得全部的虛擬站台都UTF-8化了,我相信那對我而言會是更大的工程!Anyway.在MySQL語系這麻煩問題解決後接下來的事情就容易許多!心中的大石也降下一半了!^^
批ㄟ思:本篇參考文章主要為酷!學園中的分享MySQL和php採用UTF8的詳細方法
若還有不清楚的地方大家也可以多多Google找尋相關資料!