Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
encodeURI() 関数は、特定の文字を、その文字の UTF-8 エンコードを表す 1~4 つのエスケープシーケンスに置き換えて、URI をエンコードします(2 つのサロゲート文字で構成される文字の場合は、 4 つのエスケープシーケンスのみになります)。encodeURIComponent() と比較すると、この関数はエンコードする文字の数が少なく、URI 構文の一部である文字はそのまま残します。
URI としてエンコードされる文字列です。
指定された文字列を URI としてエンコードした新しい文字列を表します。
uri に孤立サロゲートが含まれている場合に発生します。
encodeURI() は、グローバルオブジェクトの関数プロパティです。
encodeURI() 関数は、UTF-8 コード単位で文字をエスケープし、それぞれのオクテットを %XX の書式でエンコードし、必要に応じて左側に 0 を補います。UTF-16 の孤立サロゲートは、有効な Unicode 文字をエンコードしないため、encodeURI() に URIError を発生させます。
encodeURI() は、以下の文字を除くすべての文字をエスケープします。
A–Z a–z 0–9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , #2 行目の文字は URI 構文の一部である可能性のある文字であり、encodeURIComponent() によってのみエスケープされます。encodeURI() と encodeURIComponent() はどちらも、「非予約マーク」として知られる -.!~*'() という文字をエンコードしません。これらの文字は予約された用途は持っていませんが、URI では「そのまま」使用することができます。(RFC2396 を参照してください。)
encodeURI() 関数は、URI に対して特別な意味を持つ文字(予約文字)はエンコードしません。次の例は、URI に含まれる可能性のあるすべての部分を示しています。特定の文字が特別な意味を表すために使用されていることに注意してください。
encodeURI は、その名前が示すとおり、URL がすでに正しい形式であると仮定して、URL 全体をエンコードするために使用します。文字列の値を動的に URL に組み立てたい場合は、不要な場所に URL 構文文字が入らないように、それぞれの動的セグメントに encodeURIComponent() を使用することをお勧めします。
encodeURI() は以下のように encodeURIComponent() とは異なります。
サロゲートペアになっていない 1 個のサロゲート文字をエンコードしようとすると URIError が発生することに注意してください。例えば、
このエラーを避けるには、孤立サロゲートを Unicode 置換文字 (U+FFFD) に置き換える String.prototype.toWellFormed() を使用することができます。また、文字列を encodeURI() に渡す前に、その文字列に孤立サロゲートが含まれているかどうかを調べるには、String.prototype.isWellFormed() を使用することができます。
最近の RFC3986 では、角括弧は(IPv6 用の)予約文字となっているため、角括弧が(ホスト名など) URL の一部を形成している場合はエンコードされていないほうがよいでしょう。また、URI の区切り文字として正式に使用されていない !, ', (, ), * も予約文字として予約されています。次の関数は、RFC3986 準拠の URL 書式に文字列をエンコードします。
| ECMAScript® 2027 Language Specification # sec-encodeuri-uri |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。