重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。
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を利用することを前提としています。)

A 回答 (1件)

デコードされた「イチゴ」という文字を


更にデコードしているように思いますがいかがでしょうか?

この回答への補足

早速お返事いただきありがとうございます。
フォームばかりみておりましたがデコードを更にデコードしているということなので結果を返す方をもう一度調べてみようと思います。

フォームにキーワードをいれ、その結果を返すというページというページの検証にあたって、今回エラーの出たサーバーとは別のサーバーでも動作検証したところ、こちらはGETでも意図した通りに返してくれました。
サーバーによってエラーが生じる…ということもあり得るのでしょうか。その場合、サーバー側で修正することは可能なのでしょうか。

補足日時:2012/06/18 09:41
    • good
    • 0

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