WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:検索キーワードが文字化け

0:[投稿] ジュゲム [2005/10/12 00:22 ] [環境:IE perl]

Refererから入手したGoogleなどの検索キーワードのデコードの仕方がどうも分かりません。
どうしても日本語が文字化けします。
一般的な方法はありますか?


1:[回答] レミー [2005/10/12 00:59 ]

どーゆー内容なんですか?
%XX とか一般的なものを化けると言っているのか?
\uXXXX (ユニコード)を化けたと言っているのか?

何がどう化けているのかはっきりさせてくださいな。


2:[質問] ジュゲム [2005/10/12 02:35 ]

Refererのキーワード部分(%xx)を$xとして、

       $x =~ tr/+/ /;
       $x =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
       jcode::convert(*x, 'sjis');

としていますが、$x に意味不明な文字化けした漢字がいくつか出てくるんです。


3:[回答] レミー [2005/10/12 08:53 ]

SJIS だと確実に分かっているのですか?
EUCやUTF-8の可能性はありませんか?

漢字コードは一杯ありますから全部試してみたらどうですか。


4:[回答] AC1号 [2005/10/13 00:29 ]

Refererのqueryのエンコード方式は、Refererのサイトがそれぞれ好き勝手に決めるものなので、基本的に自動判別に頼るしかありません。検索キーとして使われる文章は短いですから、その自動判別も困難で、文字化けするのはある程度は仕方ないです。

しかし、GoogleやYahoo!などアクセスが多いサイトに対しては、対症療法的に入力文字コードを指定することもできます。

Googleだと、queryのieパラメータにcharsetがついているので、これでqueryにどのcharsetが使われているか知ることができます。
http://www.google.com/search?q=%E3%81%82&ie=UTF-8
Yahoo!Japanの場合は常にEUC-JPになっています。

なお、jcode.plを使われているようですが、これはUTF-8を理解できないので、Jcode.pmかEncode.pmを使わなければなりません。


5:[回答] 通りすがり [2005/10/14 16:17 ]

そのRefererにブラウザからアクセスするのが一番確実です。

>>4
の例なら「あ」だと言う事が一目で分かります。

これを自動化したいならLWP::Simple等でgetとして自前でパースしましょう。
殆どの検索エンジンの検索結果ページに記述されている<input type="text">は1〜2個程度でしょう。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]