コンテンツにスキップ

JavaScript/encodeURI

出典: フリー教科書『ウィキブックス(Wikibooks)』

encodeURI()

[編集]

概要

[編集]

encodeURI() は、URIの特殊文字をエンコードするグローバル関数です。Uniform Resource Identifier (URI) 内の特定の文字を安全にエンコードし、ウェブ上での転送や使用を可能にします。

構文

[編集]
encodeURI(uri)

パラメータ

[編集]
uri
エンコードするURI文字列

戻り値

[編集]
エンコードされたURI文字列

例外

[編集]
URIError
不正な形式のURIが渡された場合にスローされます

基本的な使用例

[編集]
// 日本語を含むURI
const originalURI = "https://example.com/検索?q=こんにちは";

// エンコード
const encodedURI = encodeURI(originalURI);
console.log(encodedURI);
// "https://example.com/%E6%A4%9C%E7%B4%A2?q=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF"

エンコード対象の文字

[編集]

encodeURI() は以下の文字をエンコードしません:

  • ;
  • ,
  • /
  • ?
  • :
  • @
  • &
  • =
  • +
  • $
  • #

エンコード vs エンコードコンポーネント

[編集]
メソッド 目的 エンコード対象
encodeURI() 完全なURIをエンコード 非ASCII文字、予約文字の一部を除く
encodeURIComponent() URIコンポーネントをエンコード ほぼすべての特殊文字

主なエンコード対象

[編集]
  • 非ASCII文字
  • スペース
  • 制御文字
  • URIで特別な意味を持つ非予約文字

注意点

[編集]
  • クエリパラメータ全体をエンコードする場合は注意が必要
  • セキュリティ目的では不十分
  • パフォーマンスへの影響は最小限

高度な使用例

[編集]
// 複雑なクエリパラメータを含むURI
const complexURI = "https://api.example.com/data?user=山田 太郎&action=検索";

// エンコード
const safeURI = encodeURI(complexURI);
console.log(safeURI);
// "https://api.example.com/data?user=%E5%B1%B1%E7%94%B0%20%E5%A4%AA%E9%83%8E&action=%E6%A4%9C%E7%B4%A2"

// APIリクエストなどで使用
fetch(safeURI)
    .then(response => response.json())
    .catch(error => console.error('エラー:', error));

セキュリティに関する考慮

[編集]
  • 信頼できないソースからのURIは、追加のサニタイズが必要
  • クロスサイトスクリプティング(XSS)対策として不十分
  • URIコンポーネントごとの詳細なエンコードが推奨される

関連メソッド

[編集]

ブラウザ互換性

[編集]
  • すべてのモダンブラウザでサポート
  • Internet Explorer 5.5以降
  • ECMAScript 3以降で標準化

仕様

[編集]
  • ECMAScript 仕様
  • WHATWG URL 仕様

脚注

[編集]