Ruby on Rails 與 MySQL 的 Unicode 編碼

Ruby on Rails 是預設使用 Unicode 的;MySQL 對於 Unicode 的支援也相當完整--照理說兩者合作起來應該琴瑟和鳴才是。

然而我把 RoR 與 MyQL 兜在一起之後,即便已將 MySQL 文字編碼設為 UTF-8 Unicode (utf8),MySQL 連線校對設為 utf8_general_ci,編碼的問題還是讓人傷透腦筋--那些在 phpMyAdmin 中所 INSERT 進去的資料,在 RoR 的頁面中總是亂碼一串;而經由 RoR 頁面所輸入的資料,不僅無法透過 phpMyAdmin 看到正確編碼,甚至不能將資料正確地存入資料庫中。

這樣子的問題會出現在 MySQL 4.1 (及以後)的版本,因為 MySQL 在 4.1 版之後大幅強化了對各種編碼的支援。如果安裝的 Rails 是 1.0 之後的版本,解決問題的方法只要在 config/database.yml 中加入一行設定即可:

development:
  adapter: mysql
  database: example_development
  encoding: utf8    # add this line
  username: root
  password:

如果 Rails 是 1.0 之前或者用的資料庫是 PostgreSQL 的話呢?懶得寫了,直接上 Rails 的 Wiki 上看說明吧。


參考自:HowToUseUnicodeString in Ruby on Rails