10幾年前寫的網站,還是 Big5 的版本,想要跟 UTF-8 的網站並行的話,在 Apache 都需要另外做下述分別設定比較能確保這些網站不會有意外:
Big5 網站加入下述:
- AddDefaultCharset Big5
UTF-8 網站加入下述:
- AddDefaultCharset UTF-8
想開了,花一小時來做個轉換,都轉成 UTF-8 就省事多了~
註:此篇修改內容包含 HTML、JavaScript、CSS、PHP、MySQL data 等。
Linux 將 Big5 網站轉 UTF-8 的步驟
於 Linux 要將 Big5 的網站轉換成 UTF-8,需要對 資料庫 與 程式碼 作轉換。
將 Big5 的 DB 內容轉成 UTF-8
- # big5 db 轉成 utf-8 db,但是因為是 latin1 的語系,所以需要下述語法
- mysqldump -u root -p --default-character-set=latin1 DBNAME > db-latin1.sql
- vim db-latin1.sql # 手動找 \,將 \ 的拿掉,ex: 許、功、蓋、豹... 不然會多 \ 或者寫入 DB Error
- iconv -f big5 -t utf-8 db-latin1.sql > db-utf8.sql
- vim db-utf8.sql # :%s/CHARSET=latin1/CHARSET=utf8/g 取代掉
- mysql -u root -p DBNAME < db-utf8.sql # 塞進去,因為 dump table 上面都有 drop table,所以直接塞進去即可
將程式碼轉換成 UTF-8
- 單一程式碼轉換 UTF-8 的語法:iconv -f big5 -t utf8 -o "$file.new" "$file" && mv -f "$file.new" "$file"
進資料夾裡面,分別執行下述:(Shell script)
for file in *.php do iconv -f big5 -t utf8 -o "$file.new" "$file" && mv -f "$file.new" "$file" done
註:我會於每個資料夾分別執行的原因是,有些轉換會有問題,所以在每個資料夾裡面,可以另外處理,避免有問題漏掉了~
下述是全部取代的做法,但是我沒試過
- $ recode cp950..utf8 .php
- $ find . -name '*.php' -exec iconv -f CP950 -t UTF-8 {} -o {} \;
註:程式碼裡面的 connection UTF-8 改寫這些就手動進去修改即可。