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