ZendFramework1.8+PostgreSQL8.3.7でPHP(5.2.6)アプリケーションを作成していたのですが、ハマったのでメモしておきます。
PostgreSQLは、データベース文字コードをSJISで作成できません。
なので携帯サイトでPHP(web)をSJISで作りたい場合は、PHP側の文字コードとPostgreSQL側の文字コードを変換しなければなりません。
一般的にはPostgreSQLは文字コードをEUC-JPかUTF8で作成します。
$ createdb -E EUC-JP dbname
PHPではクエリを投げる前に
<?phpとかやればイイのですが。。
pg_set_client_encoding($connection, "SJIS");
ZendFrameworkでDB接続を行う場合は一般的に
<?phpのように使うと思います。(俺だけか?w)
$db = Zend_Db::factory("Pdo_Pgsql", array(
"host" => "localhost",
"dbname" => "dbname"));
この場合、全てのactionメソッドでDB接続をする度に
<?phpって処理させるのが面倒くさい!
$db->query("SET NAMES 'SJIS'");
<?phpした際に自動でクライアント文字コードをSJISにしたい!
Zend_Db::factory();
という事で2時間悩みました。。。
こんな場合はZend_Db::factory()の第2引数のパラメータに
<?phpとcharsetパラメータを追加すれば良いみたいです。
$db = Zend_Db::factory("Pdo_Pgsql", array(
"host" => "localhost",
"dbname" => "dbname",
"charset" => "SJIS"));
以上。・゚・(ノε`)・゚・。
0 件のコメント:
コメントを投稿