日本語を含むURLを入力すると、文字化けのように「%」が使われた形式で表示されることがあります。これはブラウザの不具合ではなく「URLエンコード」と呼ばれる文字の変換によるものです。
URLエンコードは、適切なデータの通信やセキュリティ面で重要な役割を果たします。
本記事では、URLエンコードとは何か、変換方法や主な一覧などを解説します。さらに、URLエンコードの反対の意味である「デコード」についても見ていきましょう。
目次
URLエンコードとは
そもそも「エンコード」とは、データや情報を別のフォーマット(形式)に変換することを指します。ここでは、URLエンコードとは何かを見てみましょう。
URLで使用できない文字を変換すること
ネットを利用する方であれば、URLがどういうものか理解している方も多いと思います。しかし、URLエンコードを解説する前に、URLについて改めて確認しておきましょう。URLとは、「Uniform Resource Locator」の略称で、インターネット上にあるWebサイトやファイルの場所を表す技術方式です。インターネット上の「住所」とも呼ばれています。URLの構成は、「http://」または「https://」から表記され、その後にWebサイト名(ドメイン名)が続きます。
URLエンコードとは、URLで使用できない文字を変換することです。具体的には、URLに日本語や特定の記号([ ]や{ }など)が含まれる場合は、URLエンコードが必要になります。
使用できない文字が含まれるURLをエンコードせずに使用すると、サーバーエラーやリダイレクト機能の不具合など、さまざまな問題が発生する恐れがあります。
一部のWebブラウザでは、日本語を含むURLでも正常にサイトにアクセスできることがありますが、これはブラウザが自動的にURLの変換を行っているためです。一般的には、問題発生を回避するために、URLエンコードを行うことが推奨されています。
関連記事
・httpとhttpsの違いとは?リダイレクトやセキュリティも解説
・サーバーとは何か?サーバー構築からサーバーエラーやサーバーダウンまで徹底解説
・ブラウザ(browser)とは?意味や種類、仕組みを解説
URLエンコードの目的
URLエンコードを行う目的には「データの正確な送信」や「セキュリティの向上」などが挙げられます。それぞれの目的について詳しく見ていきましょう。
データの正確な送信
URLに含まれる特殊文字をエンコードすることで、情報が正しく送信されます。その結果、サーバーは適切なレスポンスを返すことができます。正しくエンコードできない特殊文字がURLに含まれると、適切な読み取りができません。
互換性の確保
URLをエンコードすると、文字コードや言語が異なるサービス間でも正しい通信が可能です。
なお、多くのブラウザでは、URLエンコードが自動的に行われます。
セキュリティの向上
URLに危険な文字が使用されていると、セキュリティリスクや潜在的な問題が発生する恐れがあるため、URLエンコードを行うことが重要です。URLの区切り文字として間違われやすい文字(<>、[])は、HTMLや一部のプログラミング言語で使用されるため、サイバー攻撃の標的となることがあります。
関連記事:プログラミングとは?基本的な意味を理解しておけばビジネスでも役立ちます!
技術的な制約への対応
近年では、日本語が含まれるURLに対応するWebブラウザがほとんどですが、URLに日本語が含まれていると、一部のWebブラウザが日本語部分を認識できず、リンクが正しく機能しないことがあります。これは、Webブラウザは一般的に英数字や一部の記号しか扱えないためです。このような技術的な制約を解決する目的として、URLエンコードが存在します。
URLエンコードの変換方法と例
ここでは、URLエンコードの変換方法と例を見ていきましょう。
併せて、URLエンコードに使用する関数も紹介します。
URLエンコードに使う関数
URLエンコードに使う関数は、3種類あります。
● エンコードURI関数
エンコードURI関数では、特殊文字を「%」記号と、UTF-8コードの16進数を組み合わせて表現します。また、ここでは予約文字(/、+、=など)のエンコードは行いません。
エンコードURIの構成は、以下の通りです。
encodeURI(変換するURI)
● エンコードURIComponent関数
エンコードURIComponent関数は、エンコードURIとは異なり、予約文字もエンコードします。
URIを構成するパーツのエンコーディングに最適ですが、URI全体をエンコードすると無効なURIが返されるため注意が必要です。
● エスケープ関数
エスケープとは、キーボードで入力不可能な文字を出力させる方法です。エスケープ関数は、エンコードURI関数が現れるまでは頻繁に使われていました。しかし、Webブラウザにより挙動が異なるため、現在は使用が推奨されていません。
プログラム内でURLエンコードを行う際は、標準ライブラリにURLエンコード用の関数が用意されていることが一般的です。なお、URLエンコードに使用する言語やライブラリによって、エンコードの対象となる記号が異なる場合があるため注意が必要です。例えば、Java言語では「*」「-」「_」といった記号は変換されません。
URLデコードとは
URLの変換には、「URLデコード」という方法もあります。
ここでは、URLデコードとは何かを見てみましょう。
元のURIに戻すこと
URLデコードとは、エンコードしたURLを元のURIに復元することであり、デコードURIやデコードURIComponentなどの関数を用いて実行されます。この手法は、GETメソッドを使用して値を送信する際に利用されます。
なお、GETメソッドとは、HTTPリクエストメソッドの一つで、Webサーバーから情報を取り出したい時に使用する仕組みです。
URLエンコードの主な一覧とツールの例
ここでは、URLエンコードの主な一覧と変換ツールの例を紹介します。
URLエンコードの主な一覧
URLエンコードを行う記号と、エンコード完了後に表記されるコードを、以下の表にまとめました。
記号 | コード |
SPACE | %20 |
! | %21 |
“ | %22 |
# | %23 |
$ | %24 |
% | %25 |
& | %26 |
‘ | %27 |
( | %28 |
) | %29 |
* | %2A |
+ | %2B |
, | %2C |
– | – |
. | . |
/ | %2F |
: | %3A |
; | %3B |
< | %3C |
= | %3D |
> | %3E |
? | %3F |
@ | %40 |
[ | %5B |
¥ | %5C |
] | %5D |
^ | %5E |
_ | _ |
` | %60 |
{ | %7B |
| | %7C |
} | %7D |
~ | ~ |
変換ツール例
以下では、Webブラウザ上で利用できるURLエンコードのフリーツールを紹介します。
● TECH-UNLIMiTED「URLエンコード・デコード」
URLのエンコードやデコードが行えます。
使い方は、以下の通りです。
1.エンコードかデコードの実施したい方を選択する
2.変換する文字列を入力する
3.「変換する」ボタンをクリックする
● TAG index「URLエンコード・デコードフォーム」
UTF-8、Shift_JIS、CP932、EUC-JPの文字コードに対応しています。
使い方は、以下の通りです。
1.「URLエンコード」または「デコード」のフォームに入力する
2.「エンコードする」または「デコードする」をクリックする
● 株式会社エン・PCサービス「URLエンコード/デコードツール」
使い方は、以下の通りです。
1.「エンコード/デコードしたい文字列」フォームに入力する
2.文字エンコーディングの種類を選択する
3.「エンコードする」または「デコードする」をクリックする
まとめ
URLエンコードとは、日本語や一部の記号などURLに使用できない文字が含まれる場合に、使用できる文字へ変換することです。URLに使用できない文字が含まれていると、サーバーエラーやセキュリティ面の危険性、リダイレクト機能が使えないなどさまざまな問題が発生する恐れがあります。日常的なWebサイト閲覧やファイルの転送などではあまり気にする機会がないですが、WebプログラミングやWebサイト管理を行う場合には、URLエンコードが重要です。ブラウザ上で利用できるフリー変換ツールも存在するため、必要に応じて活用することをおすすめします。