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