実は重要...URLエンコード!

今回はWebアクセスをする上で、最低限押さえておきたいURLエンコードについての説明です。
なんとなく理解されている方もいらっしゃると思いますが、NAVITIME APIのURLを例に取りながら、URLエンコードとはどのようなものなのか見ていきましょう!
●URLエンコードとは...?
URLとは、簡単にいうとホームページの住所のようなもの。
Webブラウザ(Google Chrome,Internet Explorer等)にURLを入力することで、
世界中の様々なWebページを閲覧することができます。
一方、エンコードとは、データを他の形式に変換することです。
URLとして使用できる文字は限られているため、必要に応じて変換する必要があります。
つまり、URLエンコードとは
URLを、URLとして使用できる文字に変換することなのです!
●どんなときに変換が必要...?
では、一体どのようなときにURLを変換する必要があるのでしょうか。
下記のように、日本語文字列や特定の記号({ } [ ]等)が含まれる場合はエンコードする必要があります。
https://api-challenge.navitime.biz/v1s/{各自のSID}/address/list?word=東京
⇒日本語が含まれているためNG
https://api-challenge.navitime.biz/v1s/{各自のSID}/route_transit?start=35.667583,139.715769&goal=35.202558,136.799237&via_type=optimal&via=[{"node": "00004473"},{"node": "00005630"}]
⇒[ ]や{ }が含まれているためNG
下記のようにエンコードすることで正常にリクエストすることができます。
https://api-challenge.navitime.biz/v1s/{各自のSID}/address/list?word=%E6%9D%B1%E4%BA%AC
https://api-challenge.navitime.biz/v1s/{各自のSID}/route_transit?start=35.667583,139.715769&goal=35.202558,136.799237 &via_type=optimal &via=%5b%7b"node"%3a%20"00004473"%7d%2c%7b"node"%3a%20"00005630"%7d%5d
※一般的に、エンコード形式は「UTF-8」を使用します
(例:東京⇒%E6%9D%B1%E4%BA%AC、ちば⇒%E3%81%A1%E3%81%B0)
日本語文字列や特定の記号を含まない場合はエンコードする必要がありません。
https://api-challenge.navitime.biz/v1s/{各自のSID}/mapscript?version=3.4&host=localhost
⇒全て使用できる文字なのでOK
なお、Google Chrome等のWebブラウザを用いる場合、日本語が含まれていても正常にリクエストすることできますが、これはGoogle Chrome等のブラウザがみなさんに見えないところで変換処理を行なっているためです。試しに、ブラウザに入力したURLをテキストエディタに貼り付けて確認してみると、エンコードがされていることを確認できます。
他にもURLとして使用できない文字があります。
詳しくはこちらをご確認ください。
●URLエンコードの方法
単純にURLエンコードをするだけであれば、Web上のフリーツールが利用できます。
「URLエンコード」で検索してみましょう。
また、プログラム内でURLエンコードを行う場合は、各言語の標準ライブラリとしてURLエンコード用の関数が用意されているため、そちらを利用してみてください。