dポイントプレゼントキャンペーン実施中!

 テキストボックスに入力された単語をスペースで区切って、それをSQL文に入れてデータベースを検索するプログラムを書いたのですが、ある特定のキーワードを入力すると以下のようなエラーが出ます。

Warning: pg_query(): Query failed: ERROR: invalid byte sequence for encoding "SJIS": 0x9125 in /**パス**/search.php on line 58

↑は「早期」というキーワードを入れて検索した時に出たものです。DBには「早期終了」というデータがあるのですが、この場合は引っ掛かりません。「終了」というキーワードで検索すると出てきます。
クエリに失敗したというのは分かるんですが、SJISが出てくる意味が分りません。 文字コードの問題でしょうか? これはどうやったら解決できるんでしょうか?

A 回答 (1件)

「invalid byte sequence for encoding」でぐぐった一発目ですけども


http://shimax.cocolog-nifty.com/search/2005/06/i …

文字コードがEUCの範囲外を指定されると出るエラーです。
POSTされたデータがsjisになっているのでしょう。
データをunpack()して検査すると分かるかもしれません。

対策としてはmb_convert_encoding()を噛ませばエラーは出なくなるかと思います。

この回答への補足

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

補足日時:2007/12/18 14:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!