[pgsql-jp: 25538] Re: bytea and multi-byte enabled PostgreSQL?

Tatsuo Ishii t-ishii @ sra.co.jp
2002年 4月 5日 (金) 11:16:26 JST


石井です.

> 大垣です。
> 
> PHP4.2.0-dev (CVS version) と PostgreSQL 7.2.1を使っ
> ています。
> 
> PQescapeBytea()関数がPostgreSQL7.2のlibpqからサポート
> されています。PHP4.2.0からこの関数がpg_escape_bytea()
> としてサポートされますが、テストしていて以下の様なエラーに
> あたりました。
> 
> Warning: pg_query() query failed:  ERROR:  Invalid EUC_JP character
> sequence found (0xf75c)
>  in escape.inc on line 40
> 
> Scriptはphp.gifをファイル関数で読み込みテーブルに挿入し
> ようとしています。
> 
> $fp = fopen('php.gif','r');
> $image = fread($fp, filesize('php.gif');
> $escaped = pg_escape_bytea($image);
> $sql = "INSERT INTO php_pgsql_test (num, bin) VALUES (1, '".$escaped."');"
> 
> テーブル定義は以下の通りです。
> 
> test=# \d php_pgsql_test
>     Table "php_pgsql_test"
>  Column |  Type   | Modifiers
> --------+---------+-----------
>  num    | integer |
>  str    | text    |
>  bin    | bytea   |
> 
> 
> バイナリデータをEUC-JPテキストとして取り扱っている為、上
> 記のエラーが発生していると思います。

変ですねぇ。EUC-JPとしてのエンコーディングチェックはbyteaには適用され
ないはずなのですが.こちらには PHP4.2.0-dev の環境がないのですが,
$escapedの内容を教えて頂ければ再現テストできます.
--
Tatsuo Ishii




pgsql-jp メーリングリストの案内