[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 メーリングリストの案内