• 締切済み

CGIでのフォームのデコードについて

お世話になります。 formで検索結果を表示する際にワードが文字化けしてしまうのでご相談です。 フォームにキーワードをいれ、その結果を返すというページを作成しているのですが、 <form action="search.cgi" method="get">といった形で、GETを利用し検索フォームを作成する際に、URLエンコードはうまくいくのですが、検索キーワードが文字化けをしていまします。 例)イチゴを検索してみると、 URL http://アドレス/search.cgi?mode=meta&t_mode=meta_page&ie=Shift_JIS&oe=Shift_JIS&word=%83C%83%60%83S&hl=ja 検索キーワード 検索結果が「繧、繝√ざ」と表示されてしまう。 そのため検索結果が0となる。 エンコードはうまくいっているが、デコードが不具合を起こしているようなのですが… sub url_decode($) { my $str = shift; $str =~ tr/+/ /; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; return $str; } どう修正したらよいのかご教授いただけると幸いです。よろしくお願いします。 (文字コードは今回はShift_JISを利用することを前提としています。)

みんなの回答

  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

デコードされた「イチゴ」という文字を 更にデコードしているように思いますがいかがでしょうか?

cdaraiba
質問者

補足

早速お返事いただきありがとうございます。 フォームばかりみておりましたがデコードを更にデコードしているということなので結果を返す方をもう一度調べてみようと思います。 フォームにキーワードをいれ、その結果を返すというページというページの検証にあたって、今回エラーの出たサーバーとは別のサーバーでも動作検証したところ、こちらはGETでも意図した通りに返してくれました。 サーバーによってエラーが生じる…ということもあり得るのでしょうか。その場合、サーバー側で修正することは可能なのでしょうか。

関連するQ&A