Go to Top

URLエンコード(パーセントエンコード)についておさらい!


URLエンコードとは、文字のコードを16進数で表し、”%xx”(xxは16進数)という形に変換するエンコード方式です。

世界の人が使う文字はアルファベットだけでなく、日本語をはじめ外国語の数だけあります。また( )や ” ” のような記号もあります。
これらの文字・記号をインターネットで通信できるようにするため、URL中の半角英数字でない文字や一部のASCII文字は「%xx」の形に変換されます。

例えば日本語「あ」に対応する文字は「%E3%81%82」が割り当てられ
同じように「い」は「%E3%81%84」が割り当てられています。

Webブラウザに ”https://www.google.co.jp/search?q=あい” と入力すると、日本語部分の「あい」はURLでは使えないため、ブラウザ側で「あい」を「%E3%81%82%E3%81%84」にURLエンコードし

https://www.google.co.jp/search?q=あい
    ↓
https://www.google.co.jp/search?q=%E3%81%82%E3%81%84

というHTTP通信をしています。(試しに両方のURLをブラウザーのアドレスバーに入れてみてください。)

このことを理解しておかないと、以下の例のような2重エンコードといわれる問題が発生することがあります。

例)サイトのHTMLに記述されているURLの画像をダウンロードする。
その際、画像の保存ファイル名として、HTMLに記述されているファイル名をそのまま使う。

例えば、HTMLファイルにあるURLが http://sample.com/image/%E3%81%82%E3%81%84.jpg の場合、sample.com のサーバー内の画像ファイルは、エンコード前のファイル名「あい.jpg」で保存されています。

ところが、URLの画像ファイル名が「%E3%81%82%E3%81%84.jpg」なので、サーバにはこの名前で画像が保存されているだろうと思いこみ、Webブラウザに「http://example.com/image/%E3%81%82%E3%81%84.jpg」と入力すると、ブラウザーは「%E3%81%82%E3%81%84.jpg」を「%25E3%2581%2582%25E3%2581%2584.jpg」とURLエンコードするため、もとの画像ファイル「あい.jpg」を読みだす出すことができずに、404エラーとなってしまいます。

こうした問題を避けるには、特別な理由がない限り、URLの記述に半角英数字を使うことです。

WordPressの投稿ページでは、パーマリンクに記事のタイトル名が使えますが、タイトルが日本語の場合エンコードされた日本語は英数字と「%」に変換され、意味を持たないでたらめなURLになり、ユーザーから見るとサイトかわかりにくくなります。

読みやすさ、覚えやすさ、発見しやすさを考慮すると、URLは英数字を使用し可能な限り短くすることをお勧めします。

 

 

URLのエンコード・デコード変換を確認できるサイト
http://www.bousaid.dyndns.org/
public/software/urlencode/index.php