メインコンテンツへスキップ
開発者向け

URLエンコードとは?日本語URLの正しい扱い方

読了時間: 約10分

URLエンコードとは(基礎知識)

URLエンコードの定義

URLエンコード(URL Encoding)は、URLで使用できない文字や特殊文字を、URLで安全に送信できる形式に変換する処理です。別名「パーセントエンコーディング(Percent Encoding)」とも呼ばれます。これは、変換後の文字が「%」記号で始まることに由来します。

例えば、スペース(空白文字)は「%20」、日本語の「あ」は「%E3%81%82」に変換されます。このエンコーディングにより、あらゆる文字をURL内で正確に表現し、ブラウザやサーバー間で確実に送受信できます。

なぜURLエンコードが必要なのか

URLには、以下の理由でエンコードが必要です:

  • ASCII文字のみ使用可能:URLはASCII文字セットのみをサポートしており、日本語などのマルチバイト文字を直接使用できません
  • 予約文字の保護:「?」「&」「=」「/」などはURL構造で特別な意味を持つため、データとして使う場合はエンコードが必須です
  • 安全な文字の制限:スペース、引用符、特殊記号などは、システムによって異なる解釈をされる可能性があるため、エンコードが推奨されます
  • セキュリティ対策:適切なエンコードは、URLインジェクション攻撃などのセキュリティリスクを軽減します

URLで使える文字とエンコードが必要な文字

文字の種類文字例エンコード要否
英数字A-Z a-z 0-9不要(そのまま使用可)
安全な記号- _ . ~不要(そのまま使用可)
予約文字: / ? # [ ] @ ! $ & ' ( ) * + , ; =文脈による(データとして使う場合は必須)
スペース(空白)必須(%20または+に変換)
日本語・特殊文字あいうえお、中文、한글、< > " など必須(UTF-8バイト列から変換)

当サイトの無料URLエンコードツールを使えば、テキストを簡単にエンコード・デコードできます。ブラウザ上で完結するため、データが外部に送信される心配もありません。

パーセントエンコーディングの仕組み

エンコードの原理(UTF-8バイト列への変換)

パーセントエンコーディングは、以下の手順で行われます:

  1. 文字をUTF-8バイト列に変換(例:「あ」→ E3 81 82)
  2. 各バイトを「%」+16進数で表現(例:E3 81 82 → %E3%81%82)
  3. 結合して最終的なエンコード文字列を生成

具体例:日本語のエンコード

「こんにちは」という日本語をエンコードする例:

元のテキスト: こんにちは
UTF-8バイト列:
こ → E3 81 93
ん → E3 82 93
に → E3 81 AB
ち → E3 81 A1
は → E3 81 AF
エンコード結果: %E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF

特殊文字のエンコード例

元の文字エンコード後説明
(スペース)%20 または +クエリ文字列では+も使用可
!%21感嘆符
#%23フラグメント識別子(アンカー)
&%26パラメータ区切り文字
=%3Dキーと値の区切り文字
?%3Fクエリ文字列の開始

実践で試す:URLエンコードツールで、実際に日本語や特殊文字をエンコードして、結果を確認してみましょう。

日本語URLの扱い方

日本語URLのメリット・デメリット

メリット

  • SEO効果:検索エンジンがキーワードを認識しやすく、検索結果での表示も目を引きやすい
  • ユーザーフレンドリー:URLから内容が直感的に理解できる(例:/tools/画像圧縮ツール)
  • クリック率向上:検索結果やSNSシェア時に、日本語URLが表示されることで信頼感が増す

⚠️デメリット

  • エンコード後の長さ:日本語1文字が9文字(%E3%81%82など)になり、URLが非常に長くなる
  • コピー&ペーストの問題:一部のツールやプラットフォームでエンコード後のURLが正しく表示されない
  • 古いシステムとの互換性:古いブラウザやサーバーで問題が発生する可能性がある

日本語URL変換の具体例

以下は、日本語を含むURLのエンコード例です:

例1: シンプルな検索クエリ
変換前: https://example.com/search?q=東京 観光
変換後: https://example.com/search?q=%E6%9D%B1%E4%BA%AC%20%E8%A6%B3%E5%85%89
例2: パラメータ名と値の両方が日本語
変換前: https://example.com/api?カテゴリー=技術記事
変換後: https://example.com/api?%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC=%E6%8A%80%E8%A1%93%E8%A8%98%E4%BA%8B
例3: パス部分に日本語を含む
変換前: https://example.com/ブログ/記事/URLエンコード
変換後: https://example.com/%E3%83%96%E3%83%AD%E3%82%B0/%E8%A8%98%E4%BA%8B/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89

推奨事項

  • パス部分:可能な限り英数字を使用(例:/blog/url-encoding-guide)
  • クエリパラメータ:検索キーワードなど、ユーザー入力値は日本語を許容し、適切にエンコード
  • SEO対策:重要なページのURLは英語表記にし、ページタイトルやメタディスクリプションで日本語を使用

日本語URLのテスト:URLエンコードツールで、日本語を含むURLがどのようにエンコードされるか確認してみましょう。

encodeURIとencodeURIComponentの違い

JavaScriptには、URLエンコードを行う2つの関数があります。それぞれの用途と違いを理解することが重要です。

encodeURI()

用途:完全なURLをエンコードする際に使用

エンコードしない文字:

  • 英数字(A-Z a-z 0-9)
  • URL構造に必要な文字:: / ? # [ ] @ ! $ & ' ( ) * + , ; =
  • 安全な記号:- _ . ~

適用例:完全なURLにリダイレクトする場合

encodeURIComponent()

用途:URLのパラメータ値など、一部分をエンコードする際に使用

エンコードしない文字:

  • 英数字(A-Z a-z 0-9)
  • 安全な記号:- _ . ~ ! ' ( ) *

エンコードする文字:: / ? # [ ] @ $ & + , ; =など、URLの構造文字も含めてほぼすべての特殊文字

適用例:クエリパラメータの値、フォームデータの送信

比較表

文字encodeURI()encodeURIComponent()
:そのまま(:)%3A
/そのまま(/)%2F
?そのまま(?)%3F
&そのまま(&)%26
=そのまま(=)%3D
日本語%E3%81%82(エンコード)%E3%81%82(エンコード)

重要な使い分け:
完全なURLにはencodeURI()
パラメータ値にはencodeURIComponent()
を使用してください。誤った使用は、URLの構造が壊れる原因となります。

実装コード例

JavaScriptでのURLエンコード・デコードの実践的なコード例を紹介します。

例1: 検索URLの構築(encodeURIComponent使用)

ユーザーが入力した検索キーワードを含むURLを安全に構築する例です。

// ユーザーの入力値
const searchQuery = "東京 観光スポット";
const category = "旅行&レジャー";

// パラメータ値をエンコード
const encodedQuery = encodeURIComponent(searchQuery);
const encodedCategory = encodeURIComponent(category);

// URLを構築
const searchURL = `https://example.com/search?q=${encodedQuery}&category=${encodedCategory}`;

console.log(searchURL);
// 出力: https://example.com/search?q=%E6%9D%B1%E4%BA%AC%20%E8%A6%B3%E5%85%89%E3%82%B9%E3%83%9D%E3%83%83%E3%83%88&category=%E6%97%85%E8%A1%8C%26%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC

// デコード
const decodedQuery = decodeURIComponent(encodedQuery);
console.log(decodedQuery); // 出力: 東京 観光スポット

例2: 完全なURLのエンコード(encodeURI使用)

日本語を含むURLをリダイレクトやリンクとして使用する例です。

// 日本語を含む完全なURL
const fullURL = "https://example.com/ブログ/記事/URLエンコード?タグ=技術";

// 完全なURLをエンコード(URL構造は保持)
const encodedURL = encodeURI(fullURL);

console.log(encodedURL);
// 出力: https://example.com/%E3%83%96%E3%83%AD%E3%82%B0/%E8%A8%98%E4%BA%8B/URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89?%E3%82%BF%E3%82%B0=%E6%8A%80%E8%A1%93

// デコード
const decodedURL = decodeURI(encodedURL);
console.log(decodedURL); // 出力: https://example.com/ブログ/記事/URLエンコード?タグ=技術

例3: URLパラメータの解析とエンコード

URLSearchParamsを使った安全なパラメータ処理の例です。

// URLSearchParams を使用(自動エンコード)
const params = new URLSearchParams();
params.append('search', '東京タワー');
params.append('filter', 'カテゴリー=観光地');

const apiURL = `https://api.example.com/places?${params.toString()}`;

console.log(apiURL);
// 出力: https://api.example.com/places?search=%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC&filter=%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%3D%E8%A6%B3%E5%85%89%E5%9C%B0

// パラメータの取得(自動デコード)
const urlObj = new URL(apiURL);
console.log(urlObj.searchParams.get('search')); // 出力: 東京タワー
console.log(urlObj.searchParams.get('filter')); // 出力: カテゴリー=観光地

おすすめ:URLSearchParams APIを使用すると、エンコード・デコードが自動的に行われるため、より安全で簡単にURLパラメータを扱えます。複雑な文字列処理が不要になります。

コード不要でエンコード:URLエンコードツールを使えば、コーディング不要で簡単にURLエンコード・デコードを実行できます。

よくある質問(FAQ)

Q1.URLエンコードとは何ですか?
URLエンコード(パーセントエンコーディング)とは、URLで使用できない文字や予約文字を「%」記号と16進数の組み合わせで表現する方法です。例えば、スペースは「%20」、日本語の「あ」は「%E3%81%82」に変換されます。これにより、あらゆる文字をURL内で安全に送信できます。
Q2.encodeURIとencodeURIComponentの違いは何ですか?
encodeURIは完全なURLをエンコードする際に使用し、URL構造に必要な文字(:、/、?、&など)はエンコードしません。一方、encodeURIComponentはURLのパラメータ値など一部分をエンコードする際に使用し、ほぼすべての特殊文字をエンコードします。パラメータ値にはencodeURIComponentを使うのが一般的です。
Q3.日本語URLはSEOに影響しますか?
日本語URLは、適切にエンコードされていればSEOに悪影響はありません。むしろ、URLに含まれるキーワードが検索エンジンに認識されやすくなるメリットもあります。ただし、エンコード後のURLが非常に長くなる点や、一部のツールで正しく表示されない場合がある点には注意が必要です。
Q4.URLエンコードしないとどうなりますか?
URLエンコードせずに特殊文字や日本語をURLに含めると、ブラウザやサーバーが正しく解釈できず、404エラーが発生したり、意図しない動作をする可能性があります。また、セキュリティ上の脆弱性(URLインジェクション攻撃など)につながる危険性もあるため、必ずエンコードする必要があります。
Q5.デコードはどうやって行いますか?
JavaScriptでは、decodeURI()とdecodeURIComponent()関数を使用してデコードできます。encodeURIでエンコードした場合はdecodeURI()、encodeURIComponentでエンコードした場合はdecodeURIComponent()を使用します。当サイトのURLエンコードツールでも、エンコード・デコードの両方に対応しています。

まとめ

URLエンコード(パーセントエンコーディング)は、Web開発において必須の技術です。日本語や特殊文字を含むURLを正しく扱うことで、ユーザー体験を向上させ、セキュリティリスクを軽減できます。当サイトの無料URLエンコードツールを使えば、プログラミング知識がなくても、簡単にエンコード・デコードを実行できます。

本記事のポイント:

  • URLエンコードとは:URLで使用できない文字を「%」+16進数で表現する方法(パーセントエンコーディング)
  • 仕組み:文字をUTF-8バイト列に変換し、各バイトを%XX形式でエンコード
  • 日本語URL:SEO効果がある一方、エンコード後のURLが長くなるデメリットも
  • encodeURI vs encodeURIComponent:完全なURLにはencodeURI、パラメータ値にはencodeURIComponentを使用
  • 実装方法:JavaScript標準関数、URLSearchParams API、オンラインツールなど複数の選択肢がある

今すぐURLエンコード・デコードを試してみましょう

無料でURLエンコード →
Cookieとデータ利用について

本サイトでは広告配信と利用状況分析のためCookie等を使用します。「同意する」を押すと広告・解析のデータ利用を許可します。設定はいつでもブラウザのCookieを削除して変更できます。

URLエンコードとは?日本語URLの正しい扱い方 | ムリョウツールズ