コンテンツにスキップ

JavaScript/decodeURI

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

decodeURI() は、エンコードされたURIを元のフォーマットにデコードするグローバル関数です。Uniform Resource Identifier (URI) において、エンコードされた特殊文字を元の文字に戻します。

構文

[編集]
decodeURI(encodedURI)

パラメータ

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

戻り値

[編集]
デコードされた元のURI文字列

例外

[編集]
URIError
不正にエンコードされた文字が含まれている場合にスローされます

基本的な使用例

[編集]
// エンコードされたURI
const encodedURI = "https://example.com/%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF";

// デコード
const decodedURI = decodeURI(encodedURI);
console.log(decodedURI); // "https://example.com/こんにちは"

エンコード vs デコード

[編集]
メソッド 目的 対象文字
encodeURI() URIをエンコード 特殊文字(予約文字を除く)
decodeURI() エンコードされたURIをデコード エンコードされた文字を元に戻す

特殊文字の扱い

[編集]

decodeURI() は以下の文字をデコードしません:

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

これらの文字は decodeURIComponent() を使用することでデコード可能です。

注意点

[編集]
  • エンコードされていない文字列に対して使用しても安全です
  • 不正なエンコード文字が含まれる場合は URIError を発生
  • 可読性のために使用、セキュリティ目的では不十分

高度な使用例

[編集]
// クエリパラメータを含むURI
const complexURI = "https://example.com/search?q=%E6%A4%9C%E7%B4%A2%E8%AA%9E";

try {
    const decodedURI = decodeURI(complexURI);
    console.log(decodedURI); 
    // "https://example.com/search?q=検索語"
} catch (error) {
    if (error instanceof URIError) {
        console.error("デコード中にエラーが発生しました");
    }
}

関連メソッド

[編集]

ブラウザ互換性

[編集]

すべてのモダンブラウザおよびECMAScript 3以降でサポートされています。

仕様

[編集]
  • ECMAScript 3以降
  • WHATWG URL 仕様

脚註

[編集]