PHP 使用 php activerecord 存取 database 的中文編碼如何處理

PHP 最常搭配的是 MySQL database,但是上網調查一下,目前 php 連接 mysql 的 library 有幾套不用的方式,一個是舊的 mysql library ,還有新一點的 mysqli library,另外還有通用版本,適合各個 database 的 PDO library,網路上還有提到使用 ORM 方式存取,仿效 ruby on rails 方式的 php active record library.

目前我使用的是 php activerecord,如果使用過 Ruby on Rails 上的 ActiveRecord 的話,使用這一套應該是完全沒有難度,看看說明文件中的範例,馬上就可以上手了。

這裡要特別說明的是有關資料庫編碼的問題,目前資料庫是使用 UTF-8 當作編碼存取的時候,可以在 php activerecord 中透過參數指定使用 UTF-8 來存取,這樣就在處理中文字時,就沒有問題了,可以參考下面的範例程式:
//設定要存取的資料庫,最後加上 ?charset=utf8 指定所使用的資料庫編碼

require_once 'php-activerecord/ActiveRecord.php';

ActiveRecord\Config::initialize(function($cfg) {
    $cfg->set_model_directory('models');
    $cfg->set_connections(array(
    'development' => 'mysql://DB_ACCOUNT:DB_PASSWORD@HOST/DB_NAME?charset=utf8'));
});

參考資料:
[1] rora’s blog – 淺談 PHP-MySQL, PHP-MySQLi, PDO 的差異
http://blog.roga.tw/2010/06/%E6%B7%BA%E8%AB%87-php-mysql-php-mysqli-pdo-%E7%9A%84%E5%B7%AE%E7%95%B0/

[2] PDO vs. MySQLi: Which Should You Use?
http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/

[3] PHP 預計 廢除 ext/MySQL 改用 PDO 或 MySQLi
http://blog.longwin.com.tw/2011/07/php-feture-pdo-mysqli-2011/

[4] php.activerecord PHP-ORM
http://www.phpactiverecord.org/

[5] Propel PHP-ORM
http://propelorm.org/

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: