URLエンコードとは|日本語URLが文字化けする理由

URLに日本語を含めてコピーすると、「%E6%97%A5%E6%9C%AC」のような記号の並びに変わっていることがあります。これがURLエンコードです。本記事では、その仕組みと必要な理由を解説します。

URLエンコードが必要な理由

URLで安全に使える文字は、半角英数字と一部の記号に限られています。日本語や空白、「&」「?」といった意味を持つ記号をそのまま含めると、サーバーやブラウザがURLの構造を正しく読み取れなくなります。そこで、使えない文字を「%」に続く2桁の16進数に変換して、安全な形にします。

例: 「日本」という文字列
→ %E6%97%A5%E6%9C%AC

これは、文字をUTF-8のバイト列に変換し、各バイトを16進数で表したものです。「日」という1文字が、UTF-8では3バイトで表現されるため、「%E6%97%A5」のように3つの%記号が並びます。

コンポーネントとURL全体、2つの変換方法

URLエンコードには、変換する範囲が異なる2つの方法があります。

この使い分けを誤ると、たとえばクエリパラメータの値に「&」が含まれていた場合、意図しない位置でパラメータが区切られてしまうことがあります。

デコードで元に戻す

エンコードされたURLを人が読める形に戻す処理が、URLデコードです。「%E6%97%A5%E6%9C%AC」を元の「日本」に戻すような処理で、エンコードとは逆方向の変換です。

どんな場面で使うか

日本語のページタイトルがURLに含まれるサイトのリンクを共有するとき、APIにパラメータとして日本語の検索キーワードを渡すとき、フォームの入力内容をURLに埋め込むときなど、Web開発や日常のちょっとした作業で登場します。

まとめ

URLエンコードは、URLで使えない文字を安全な形に変換する仕組みです。コンポーネント単位かURL全体かで、変換される範囲が変わる点に注意してください。

実際の変換はURLエンコード/デコードツールから行えます。

戻る