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 仕様

脚注

編集