• 締切済み

pg_queryのエラー

 テキストボックスに入力された単語をスペースで区切って、それをSQL文に入れてデータベースを検索するプログラムを書いたのですが、ある特定のキーワードを入力すると以下のようなエラーが出ます。 Warning: pg_query(): Query failed: ERROR: invalid byte sequence for encoding "SJIS": 0x9125 in /**パス**/search.php on line 58 ↑は「早期」というキーワードを入れて検索した時に出たものです。DBには「早期終了」というデータがあるのですが、この場合は引っ掛かりません。「終了」というキーワードで検索すると出てきます。 クエリに失敗したというのは分かるんですが、SJISが出てくる意味が分りません。 文字コードの問題でしょうか? これはどうやったら解決できるんでしょうか?

みんなの回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

「invalid byte sequence for encoding」でぐぐった一発目ですけども http://shimax.cocolog-nifty.com/search/2005/06/invalid_byte_se_6658.html 文字コードがEUCの範囲外を指定されると出るエラーです。 POSTされたデータがsjisになっているのでしょう。 データをunpack()して検査すると分かるかもしれません。 対策としてはmb_convert_encoding()を噛ませばエラーは出なくなるかと思います。

rusya
質問者

補足

回答ありがとうございます。 やはり文字コードの問題なんですね…。ただ、ご指摘にあったmb_convert_encoding()を噛ませても一向に改善しません。EUC-JPにしても、SJISに指定しなおしてもダメでした。 ソースは元々すべてSJISで書いていて、設定もSJISになっているはずなのですが、他のソースは問題なく動くのに(DBへのインサートやアップデートなど)、問題の検索プログラムだけこのエラーが出ます。 他に確認する点はありますでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A