Yahoo!など検索エンジンで検索すると、URLに検索単語が記号化された感じで表示されますが、これをURLエンコードと言います。 「URLエンコード」とはとほほのWWW用語集によれば、『URLとして用いてよい文字のみになるように文字列をエンコード(変換)すること。例えば、空白文字は + に、チルダ(~)記号は %7E に変換される』という意味です。 誤解を恐れず簡単に言うと、「URLには日本語を使えないので、日本語を半角英数字や記号に変換する」という感じでしょうか。 検索サイトでは、URLに検索文字列を格納しているので、英語ならともかく、日本語だとURLとして不適切です。 なので、URLエンコードをして英数字などに変換してやるわけですね。
実際は「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エンコードされた文字列も違ってきます。
上にあるURLエンコードフォームでは、「URLエンコード」と、URLエンコードされた文字列を日本語に直す「URLデコード」を見てみることができます。 仕組みはいたってシンプルです。(カッコ内はPHP関数) 1.入力フォームから受け取った文字列の文字コードを変更する(mb_convert_encoding) 2.URLエンコード(URLデコード)する(urlencode,urldecode) |