JavaScript/encodeURI
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 仕様