JavaScript/unescape
unescape()
は非推奨の関数で、escape()
関数によってエンコードされた文字列をデコードするために使用されていました。この関数は、16進エスケープシーケンスを元の文字に変換します[1]。
構文
unescape(string)
string
: デコードする文字列。
戻り値
デコードされた文字列を返します。%XX
形式(XX は16進数)および %uXXXX
形式(XXXX は16進数)のエスケープシーケンスが元の文字に置き換えられます。
例
基本的な使用方法
以下のプログラムは、unescape()
を使用して escape()
でエンコードされた文字列をデコードする方法を示しています。
console.log(unescape("Hello%2C%20World%21")); // "Hello, World!" console.log(unescape("%u3053%u3093%u306B%u3061%u306F")); // "こんにちは"
このプログラムでは、unescape()
を使用してエスケープされた文字列をデコードしています。16進エスケープシーケンスが元の文字に戻されています。
unescape()とdecodeURI()の比較
以下のプログラムは、unescape()
と推奨される decodeURI()
/decodeURIComponent()
の違いを示しています。
const escaped = "https%3A//example.com/%3Fq%3D%u3053%u3093%u306B%u3061%u306F"; console.log(unescape(escaped)); // "https://example.com/?q=こんにちは" const encoded = "https://example.com/?q=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF"; console.log(decodeURI(encoded)); // "https://example.com/?q=こんにちは" const encodedComponent = "https%3A%2F%2Fexample.com%2F%3Fq%3D%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF"; console.log(decodeURIComponent(encodedComponent)); // "https://example.com/?q=こんにちは"
このプログラムでは、unescape()
、decodeURI()
、decodeURIComponent()
を使用した結果を比較しています。unescape()
は古いエンコーディング方式をデコードするために使用され、decodeURI()
と decodeURIComponent()
は現代的なUTF-8エンコーディングをデコードします。
注意点
- 非推奨:
unescape()
関数は非推奨であり、新しいコードではdecodeURI()
またはdecodeURIComponent()
を使用すべきです。 - Unicode対応の問題:
unescape()
は%uXXXX
形式の古いエンコーディングを処理しますが、現代的なUTF-8エンコーディングには適していません。 - 代替手段: URLデコーディングには
decodeURI()
またはdecodeURIComponent()
を使用してください。
脚註
- ↑ この関数はレガシーコードで見られることがありますが、新しいコードでは使用すべきではありません。