エンコード

URL Encode/Decode

URL エンコード・デコード — リンクやクエリパラメータでエスケープが必要な文字を変換します。

URL encoding (percent-encoding) replaces characters that aren't allowed in a URL — spaces, non-Latin letters, special characters — with %XX sequences, where XX is the hex code of the byte. This keeps links and query parameters from getting mangled in transit.

How to use it

Common uses

Things to keep in mind

Encode parameter values, not the whole URL at once — otherwise you'll also encode the separators you need (:, /, ?, &).

JavaScript's encodeURIComponent and encodeURI encode different character sets — the former is meant specifically for parameter values.

このツールに関する記事: URL Encode/Decode:リンクにおけるパーセントエンコーディング

よくある質問

URL エンコードとは何ですか?

URLで特別な意味を持つ文字(スペースや &、日本語などの非ASCII文字)を %XX 形式のパーセントエンコーディングに変換する方式です。クエリパラメータやパス内で文字化けや意図しない解釈を防ぐために使います。

コンポーネントと URI の違いは何ですか?

コンポーネントモードはクエリパラメータの値など単一の断片を想定し、&や=も含めてエンコードします。URIモードはURL全体を想定し、:や/など構造上必要な文字はそのまま残します。

URL エンコードと URL セーフ Base64 は同じものですか?

異なります。URLエンコードは文字を%XX形式に変換するパーセントエンコーディングで、URLセーフBase64はBase64の+と/を-と_に置き換えただけのものです。混同しやすいので用途に応じて使い分けてください。

二重エンコードとは何ですか、どう見分けますか?

すでにエンコードされた文字列をもう一度エンコードしてしまう間違いです。%自体が%25に変換されるため、%20は%2520になります。デコード結果に%25XXのようなパターンが現れたら、二重エンコードの兆候です。

スペースが + でエンコードされる場合と %20 でエンコードされる場合があるのはなぜですか?

スペースを+で表すのは、フォームやクエリ文字列で使われるapplication/x-www-form-urlencoded形式です。%20はRFC 3986で定義された標準のパーセントエンコーディングで、URLのどの部分でも正しく使えます。

記事: エンコード

Base64とは何か、なぜ必要で、どう動くのか

Base64がバイナリデータをASCIIテキストにどう変換するか、実際にいつ必要になるか。

Base32:Base64との違いと、どんな場面で便利か

大文字小文字を区別しないBase32のアルファベットと、Base64より便利な場面。

HTML Entities:特殊文字を安全に表示する方法

< > &をエスケープすべき理由と、それがマークアップの破損をどう防ぐか。

JWT:トークンの構造と「デコード」の意味

JWTのheader、payload、signatureと、デコードが署名検証と同じでない理由。

Unicode Escape:\uXXXX形式が意味するもの

JSONやJS文字列に現れる\u0041のようなシーケンスがどこから来て何を意味するか。

ROT13とシーザー暗号:単純な文字の置き換え

13文字分のシフトがROT13を自己反転にする理由と、今なお使われる理由。

Punycode:国際化ドメイン名がDNSでどう動くか

非ラテン文字を含むドメインがxn--プレフィックス付きのASCII形式にどう変わるか。

モールス符号:テキストが点と線に変わる仕組み

文字を点と線でエンコードする原理と、モールス符号が今どこで使われているか。

Data URI:画像をコードに直接埋め込むべき場面

Data URIがファイルの内容をHTMLやCSSに直接埋め込む仕組みと、それが有効な場面。

Gzip + Base64:テキストとして送るためのデータ圧縮

圧縮されたバイナリデータをテキストフィールドに入れる前にBase64でもエンコードする理由。

XML Entities:XML文書内の文字をエスケープする

これがないと解析時に文書が壊れる、XMLの5つの必須エンティティ。