昔設置したGoogleカスタム検索が気付いたら動かなくなってしまっていたので、修正しようとしたのですが、結構ハマってしまったので記事にしてみました。昔に構築したサイトの中に、Googleカスタム検索を設置していたサイトがあったのですが、「検索が動かなくなってしまった」という連絡を受けたので調査をしてみました。Googleの仕様変更後(?)Shift_JISで動作しなくなった模様?当時制作したサイトはShift_JISで構築し、その環境内でGoogleカスタム検索も問題なく動いていました。その後、検索フォームまわりは弄っていないはずなのに突然動かなくなってしまったので色々試してみたら、マルチバイトで検索を掛けた場合に不具合が発生している事に気付きました。(半角英数文字での検索は、問題なく動作していましたので。フォーラムhttps://productforums.google.com/forum/#!topic/websearch-ja/OeSCG4vSwKwGooleで色々検索していたら、似たような症状で困っている人からの質問が見つかりました。上記フォーラムに投稿している日付から察するに、恐らくGoogleカスタム検索側で、最近仕様変更があったのではないかと推測されます。フォーラムのソースを参考に修正を加えてみることにします。/></form>ポイントは、パラメータのieを削除して、ブラウザの自動判別にしているところ?あとは、oeパラメータ(検索結果の文字コード)を念のため追加しています。フォーラムの事例通りでは改善されず・・・URLに渡される変数を注目してみることにこれで「やったか!?」と思いましたが、自分の調査しているサイトでは改善されませんでした。いうエラーが出ていることに気付きました。調べてみるとURLに含まれている文字列に不具合があるということらしいので、Googleカスタム検索へ渡されるURLの変数を見たところ、検索フォームに入力されたマルチバイト文字がうまく変換されていないことに気付きました。フォームから「あいうえお」と入力して検索を行うと、正常に動作するGoogleカスタム検索では、結果が表示されるページ側に送られるURLは以下のようになります。http://サイトアドレス?cx=自分のID&q=あいうえお&lr=lang_ja&oe=Shift_JIS...1http://サイトアドレス?cx=自分のID&q=あいうえお&lr=lang_ja&oe=Shift_JIS...しかし不具合の出ているGoogleカスタム検索ではこんな感じになっていました。http://サイトアドレス?cx=自分のID&q=%82%a0%82%a2%82%a4%82%a6%82%a8&lr=lang_ja&oe=Shift_JIS...1http://サイトアドレス?cx=自分のID&q=%82%a0%82%a2%82%a4%82%a6%82%a8&lr=lang_ja&oe=Shift_JIS...クエリーの文字列がURLエンコードされている状態ですね。Shift_JIS環境から送られた変数をGoogleのスクリプトを通したときに不具合が発生しているのかなと思ったので、以下の様な形で送信される情報の文字コードを固定してみることにしました。いう属性を追加して、UTF-8として情報を送信するようにしています。することで、クエリーの文字列がGoogleカスタム検索側へ正確に渡され、エラーを吐き出さずに動作するようになりました。異なるサービスで情報を受け渡しする場合は、文字コードを統一するのが理想的なのですが、昔作ったサイトで既に数百ページにも及ぶ場合は、修正するのも一苦労ですからね。応急処置ですがうまく行って良かったです。https://weblabyrinth.net北海道旭川市でweb関係のお仕事をしています。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。