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()を使用してください。
脚註
[編集]- ^ この関数はレガシーコードで見られることがありますが、新しいコードでは使用すべきではありません。