encodeURI()

特定の文字を1文字~4文字のUTF-8文字エンコーディングで表されるエスケープシーケンス(特殊文字)に置き換えることで、URIをエンコードします。 (2つの"サロゲート"文字から構成される文字は、4文字のエスケープシーケンスになります)

エスケープシーケンスとは、例えばHTMLのエスケープシーケンスであれば、 <を表す&lt;のような特殊な文字の並びのことを指します。

文法

encodeURI(URI)
引数 説明
URI 完全なURIを指定します。

URIが完全なURIであることを前提に、 URIにとって特別な意味を持つ予約文字をエンコードしません。

encodeURIは、下記の一覧の文字を除く全ての文字を、適切なUTF-8のエスケープシーケンスに置換します。

タイプ 対象文字
予約文字 ; , / ? : @ & = + $
エスケープされない文字 アルファベット、数字、 - _ . ! ~ * ' ( )
ソース #

encodeURIだけでは、GETとPOSTのリクエストで特別な文字として扱われる"&"、"+"、"="の文字がエンコード出来ないため、 XMLHTTPRequestの用途などで、HTTPのGETとPOSTのリクエストを形成できない事に注意してください。 ただし、encodeURIComponentであれば、これらの文字をエンコードします。

上位・下位のペアになっていないサロゲートのエンコードを試みると、 URIErrorがスローされることに注意してください。(下記例を参照)

// 上位・下位のペアOK
alert(encodeURI('\uD800\uDFFF'));

// 孤立した上位サロゲートのため、
// "URIError: malformed URI sequence"をスロー
alert(encodeURI('\uD800'));

// 孤立した下位サロゲートのため、
// "URIError: malformed URI sequence"をスロー
alert(encodeURI('\uDFFF'));

また、(IPv6用に)角括弧([])を予約した、 URLのより新しいRFC3986に準拠したいのであれば、 そのままでは角括弧はURLの一部(ホストなど)として形成時にエンコードされないため、 下記のような関数を使用すると良いかもしれません。(翻訳に自信なし)

function fixedEncodeURI (str) {
    return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。