[PHP-users 9234] Re: 文字列にiii を含む場合 pg_query() 実行時にエラー

Tatsuo Ishii php-users@php.gr.jp
Thu, 08 Aug 2002 11:38:07 +0900 (JST)


石井です.

> nesuka wrote:
> > ある値=iii  <- iii    (ギリシャ数字の小文字の3)
> > 
> > ある値を PHP で PostgreSQL のテーブルにデータを追加したいのですが
> > pg_query() 実行時にエラーが発生して登録できません。
> > 
> > エラー内容
> > pg_query() query failed: ERROR: Invalid EUC_JP character sequence found (0xa300) 
> > 
> > ある値は Linux 上使用できないのでしょうか。
> > もしくは EUC_JP 環境では無理なのでしょうか。
> > よろしくおねがいします。
> 
> これは、PostgreSQL 7.2.xが不正な文字コードを受け付けない為に
> エラーが発生しています。

そういう問題ではないような気がしますが.PostgreSQLの文字コードチェック
は最小限のもので,たとえばEUC_JPだったら,1バイト目が0x7fより大きかっ
たら,当然2-4バイト目(文字集合により異なります)も0x7fより大きくなけれ
ばならないとか,その程度のチェックです.

つまり,入力された文字はそういう最小限の基準を満たしていないと思われま
す.

それに,CSEからなら入力できるわけでしょう?

問題になっている文字は,ユーザ定義文字なので,PHPの方で正しく扱えてい
ないのではないでしょうか.PHPの方で,ユーザ定義文字を扱えるエンコーディ
ングに変更してあげれば解決じゃないですか?

元記事の方がphp.iniのセッティングやスクリプトのエンコーディングの情報
を開示していないので,具体的にどうやるかは答えられませんけど.
--
Tatsuo Ishii