URLエンコードと検索エンジン

   
URLエンコードのエンコード・オプション   
Yahoo!など検索エンジンで検索すると、URLに検索単語が記号化された感じで表示されますが、これをURLエンコードと言います。

「URLエンコード」とはとほほのWWW用語集によれば、『URLとして用いてよい文字のみになるように文字列をエンコード(変換)すること。例えば、空白文字は + に、チルダ(~)記号は %7E に変換される』という意味です。
誤解を恐れず簡単に言うと、「URLには日本語を使えないので、日本語を半角英数字や記号に変換する」という感じでしょうか。

検索サイトでは、URLに検索文字列を格納しているので、英語ならともかく、日本語だとURLとして不適切です。
なので、URLエンコードをして英数字などに変換してやるわけですね。
Yahoo!検索のURL構造http://search.yahoo.co.jp/bin/query?p=検索文字列
○ 英語(そのままいける)http://search.yahoo.co.jp/bin/search?p=abcde
× 日本語(変換必要)http://search.yahoo.co.jp/bin/search?p=あいうえお
(*)「あいうえお」を検索したURLは「http://search.yahoo.co.jp/bin/search?p=%A4%A2%A4%A4%A4%A6%A4%A8%A4%AA」です。
実際は「http://search.yahoo.co.jp/bin/search?p=あいうえお」でもいけますが、内部ではURLエンコードして使っているので、「次の20件」をなんかを押すと、変換されていることが分かります。



次に、検索サイトはそれぞれ別の文字コードを使っているので、それも考慮してやる必要があります。
この文字コードとは、ブラウザで表示を選択できる「エンコード」のアレです。

例えば、Yahoo!で「クモの巣」を検索したURLが↓で、「クモの巣」という検索語をURLエンコードした文字列が%a5%af%a5%e2%a4%ce%c1%e3の部分になります。
http://search.yahoo.co.jp/bin/query?p=%a5%af%a5%e2%a4%ce%c1%e3

Googleで同じ「クモの巣」を検索したURLは↓で、Yahoo!のURLエンコード文字列とは違うことことが分かります。
http://www.google.co.jp/search?q=%E3%82%AF%E3%83%A2%E3%81%AE%E5%B7%A3

これは、各検索エンジンによって文字コードが違うためで、Yahoo!はEUC-JP、GoogleはUTF-8にエンコードされて表示されます。
この文字コードが違うと、URLエンコードされた文字列も違ってきます。

主な検索エンジンの文字コード (「クモの巣」を検索した時)
Yahoo!EUC-JPhttp://search.yahoo.co.jp/bin/query?p=%a5%af%a5%e2%a4%ce%c1%e3
gooEUC-JPhttp://search.goo.ne.jp/web.jsp?TAB=&MT=%A5%AF%A5%E2%A4%CE%C1%E3
infoseekEUC-JPhttp://www.infoseek.co.jp/ITitles?lk=noframes&qt=%A5%AF%A5%E2%A4%CE%C1%E3
GoogleUTF-8http://www.google.co.jp/search?q=%E3%82%AF%E3%83%A2%E3%81%AE%E5%B7%A3
exciteSJIShttp://www.excite.co.jp/search.gw?lk=excite_jp&search=%83N%83%82%82%CC%91%83



上にあるURLエンコードフォームでは、「URLエンコード」と、URLエンコードされた文字列を日本語に直す「URLデコード」を見てみることができます。

仕組みはいたってシンプルです。(カッコ内はPHP関数)
1.入力フォームから受け取った文字列の文字コードを変更する(mb_convert_encoding)
2.URLエンコード(URLデコード)する(urlencode,urldecode)


戻る