URL エンコード

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

スペースなど、URL に入れることができない文字もあれば、URL で特別な意味を持つ文字もあります。HTML フォームでは、= の文字を使用して名前と値を区切ります。URI 汎用構文は、URL エンコードを使用してこの問題に対処しますが、HTML フォームは、このような文字にパーセント エンコーディングを適用するのではなく、追加の置換を行います。

たとえば、文字列内のスペースは %20 でエンコードされるか、プラス記号(+)に置き換えられます。パイプ文字(|)を区切り文字として使用する場合は、必ずパイプを %7C としてエンコードしてください。文字列内のカンマは、%2C としてエンコードする必要があります。

ご使用のプラットフォームに合わせて URL が適切にエスケープされるように、プラットフォームの標準 URL ビルド ライブラリを使用して URL を自動的にエンコードすることをおすすめします。

有効な URL の作成

「有効」な URL とは何か、説明の必要はないと考えられるかもしれませんが、それほど単純なことではありません。ブラウザのアドレスバーに入力される URL には特殊文字("上海+中國" など)が含まれている場合があります。このような特殊文字は、ブラウザで別のエンコードに内部的に変換してから送信する必要があります。同様に、UTF-8 入力を生成するコードや受け付けるコードでは、UTF-8 の文字が使用された URL を「有効」な URL として扱うことがありますが、それらの文字を Web サーバーに送信する前に変換する必要があります。このプロセスは、URL エンコードまたはパーセント エンコードと呼ばれます。

特殊文字

すべての URL は URI(Uniform Resource Identifier)仕様で規定されている構文に従う必要があるため、特殊文字を変換する必要があります。つまり、URL には、ASCII 文字の特別なサブセット(よく使用される英数記号および URL 内で制御文字として使用される予約文字)のみを含める必要があります。次の表は、こうした特殊記号をまとめたものです。

有効な URL 文字の概要
セット文字数URL での使用法
英数字 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 テキスト文字列、スキームでの使用(http)、ポート(8080)など
未予約 - _ . ~ テキスト文字列
予約済み ! * ' ( ) ; : @ & = + $ , / ? % # [ ] 制御文字やテキスト文字列

有効な URL を作成するときは、有効な URL 文字の概要表に記載されている文字のみを使用する必要があります。URL でこの文字セットを使用すると、一般的に 2 つの問題が発生します。1 つは省略、もう 1 つは置き換えです。

  • 処理する文字が上記のセットに含まれない場合。たとえば、「上海+中國」のような英語以外の文字は、上記の文字を使用してエンコードする必要があります。一般的な命名規則では、URL 内で使用できないスペースもプラス記号 '+' を使用して表します。
  • 文字は上記のセットに予約文字として含まれるが、文字どおりに使用する必要がある場合。たとえば、? は URL 内でクエリ文字列の先頭を示すために使用されます。文字列「? and the Mysterions」を使用する場合は、'?' 文字をエンコードする必要があります。

URL エンコードが必要なすべての文字を、'%' 文字と、UTF-8 文字に対応する 2 文字の 16 進数値を使用してエンコードします。たとえば、UTF-8 の「上海+中國」は、「%E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B」として URL エンコードされます。文字列 ? and the Mysterians は、%3F+and+the+Mysterians または %3F%20and%20the%20Mysterians として URL エンコードされます。

エンコードが必要な一般的な文字

エンコードする必要がある一般的な文字は次のとおりです。

危険な文字 エンコードされた値
スペース %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

ユーザー入力から受け取った URL の変換は難しい場合があります。たとえば、ユーザーが「5th&Main St.」という住所を入力することがあります。通常は、ユーザー入力をリテラル文字として処理して、URL をパーツから作成する必要があります。

さらに、URL は、すべての Google Maps Platform ウェブサービスと Static Web API で 8,192 文字に制限されています。ほとんどのサービスでは、この文字制限に達することはめったにありません。ただし、複数のパラメータを持つ特定のサービスでは、URL が長くなる可能性があります。