• ベストアンサー

エスケープ、エンコード ???

javascriptで、たとえば以下の文字列を(1)から(2)にしたいのですが可能でしょうか? (1)var text = 'ダブルクォーテーション""の前に円マーク'; (2)ダブルクォーテーション\"\"の前に円マーク' 用語として、エスケープ、エンコードなど言葉が思い当たるのですが、 違いなど理解できていないため、混乱しています。 javascriptにはどんなエスケープ関数があり、エスケープ関数はどんなことをするのか、またどんなエンコード関数あり、どういう働きをするのか知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 エスケープとは、「回避する」という意味の言葉で、実行エラーを回避するために用いるものです。  たとえば "abc"def" このように文字列の途中にダブルクオートが入ってる文章は、どこが終端なのかはっきりしないため実行エラーになります。  これを回避するため、"abc\"def" とエスケープするのです。  エンコードとは、直訳すれば「暗号化する」という意味になります。  URL欄には通常、日本語が使えません。これはURLという概念自体が英語圏で生まれたものだからです。  そこで、日本語を簡単な暗号にしてURLの中に埋め込むことで、この問題に対応します。  またこのエンコードという言葉は、巨大になりがちな動画データなどを効率よく保存するために小さく整理する処理にも用いられます。

その他の回答 (1)

回答No.2

おっしゃるとおり、JavaScriptではエスケープとエンコードが、用語として一緒くたになっているので 関数名だけで探すと混乱してしまいます。 ビルドイン関数で escape(string) ってのがありますが、これはunicodeへのエンコーダです。 GETでフォームを送信したときにURLに出てくる、%u3044%u308D%u306F みたいな文字列に直します。 「エスケープ」は、ソースを記述するときにダブルクォートやシングルクォート、¥マークなどを正しく認識させるために 「\」をその前に入れてやることを指します。 これは、ソースを記述するときの話なので、JavaScriptに専用の関数があるわけではなく、 手動で「\」を記述、またはサーバ側の関数で処理することになります。 1つ余談を加えておきますと、エスケープの作業はJavaScriptに慣れていても面倒で厄介なことが多々あります。 そういうときは、scriptタグを使うと便利なことが多いです。 (あんまし有名なやり方ではないですけどね) こんな感じです ↓ <script type="text/plain" id="string0"> \n←ただの文字列として扱われる。 "'\ ←こういう記号も。 ただし、scriptタグ前後の改行もそのまま反映されるので注意 </script> <script type="text/javascript"> var str0 = document.getElementById("string0").innerHTML; alert(str0); </script> ちなみに、通常のエスケープでは、 (1) var text = 'ダブルクォーテーション""の前に円マーク'; // これは''の間に"が記述されているので\は不要です。このままでOK (2) \\\" で「ダブルクォーテーションの前に¥マーク」です。前2つで「\」、その後の \" が「"」です。