encoding / url

URL エンコード / デコード

テキストをURLエンコード(パーセントエンコーディング)形式に変換・復元します。日本語を含む文字列に対応しています。

使い方

01
  1. 「エンコード」または「デコード」タブを選択してください
  2. テキストエリアに入力すると、リアルタイムで変換結果が表示されます
  3. エンコードでは日本語・記号・スペースなどを %XX 形式に変換します
  4. 「コピー」ボタンで変換結果をクリップボードにコピーできます

実装コード

02

ブラウザ標準の encodeURIComponent / decodeURIComponent のみで実装。外部ライブラリ不要でそのままコピーして利用できます。

// URLエンコード: encodeURIComponent を使用
export function encodeUrlComponent(input: string): string {
  return encodeURIComponent(input)
}

// URLデコード: decodeURIComponent を使用
export type DecodeResult =
  | { ok: true; output: string }
  | { ok: false; error: string }

export function decodeUrlComponent(input: string): DecodeResult {
  try {
    return { ok: true, output: decodeURIComponent(input) }
  } catch (e) {
    return { ok: false, error: `デコードエラー: ${(e as Error).message}` }
  }
}

// 不正な%シーケンスの検出
export function isValidUrlEncoded(input: string): boolean {
  return !/%(?![0-9A-Fa-f]{2})/.test(input)
}

よくある使用例・注意点

03
クエリパラメータへの日本語埋め込み
URLのクエリパラメータに日本語や特殊文字を含める場合、必ずURLエンコードが必要です。例:検索ワード「日本語」→ ?q=%E6%97%A5%E6%9C%AC%E8%AA%9E。ブラウザのアドレスバーでは自動的に変換されることがありますが、コード上では明示的にエンコードしてください。
encodeURI vs encodeURIComponent の違い
encodeURI はURL全体に使い、: / ? # & = などのURL構造文字はエンコードしません。encodeURIComponent はクエリ値などURL部品に使い、これらの文字もすべてエンコードします。このツールは encodeURIComponent を使用しています。
+(プラス)記号の扱い
HTMLフォームのapplication/x-www-form-urlencoded形式ではスペースが+に変換されます。しかし encodeURIComponent ではスペースは%20になります。+をスペースとして扱うのは古い形式のみです。このツールは+をそのまま+として扱い、スペースには変換しません。
デコードエラーの原因
%の後に16進数2桁(0-9, A-F)が続かない場合、デコードエラーになります。例:%ZZ, %G1, 末尾の%など。エラーが出た場合は入力文字列の%シーケンスが正しいか確認してください。
APIリクエストのパラメータ構築
fetch や axios でAPIリクエストを送る際、URLにパラメータを含める場合は encodeURIComponent でエンコードしてください。URLSearchParams を使うと自動的に適切なエンコードが行われます。

関連ツール

04
Base64エンコードHTMLエスケープハッシュ生成文字数カウンター

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →