Linux 將 Big5 網站轉 UTF-8 的步驟

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

  1. # big5 db 轉成 utf-8 db,但是因為是 latin1 的語系,所以需要下述語法
  2. mysqldump -u root -p --default-character-set=latin1 DBNAME > db-latin1.sql
  3. vim db-latin1.sql # 手動找 \,將 \ 的拿掉,ex: 許、功、蓋、豹... 不然會多 \ 或者寫入 DB Error
  4. iconv -f big5 -t utf-8 db-latin1.sql > db-utf8.sql
  5. vim db-utf8.sql # :%s/CHARSET=latin1/CHARSET=utf8/g 取代掉
  6. 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 改寫這些就手動進去修改即可。

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料