最終更新:2010-11-25 (木) 11:40:45 (4900d)
エスケープ
Top / エスケープ
JavaScript
- JavaScriptの文字列リテラルには幾つか含めることが出来ない文字がある。
- JSONの仕様的には「エスケープしなくてはならない」と定められてないのだが、エスケープが必要な文字がある
for(i=0;i<65536;i++) {try { new Function("a", 'var s="' +String.fromCharCode(i)+ '"' ) }catch(e){ console.log(i) } }
Firefox 3.6 | 10,13,34,92,8232,8233 |
Chrome8 | 10,13,34,92,8232,8233 |
Safari5 | 10,13,34,92,8232,8233 |
Opera10.63 | 10,13,34,8232,8233 |
IE9(standard) | 0,10,13,34,92,8232,8233 |
IE9(quirks) | 0,10,13,34,92 |
- 10,13,34,92,8232,8233はそれぞれ、 \n, \r, ダブルクオートの中の", \, \u2028, \u2029
- Operaだけ evalやnew Functionで "\" が入っててもエラーにならない。ソース中に書けばエラーだが。
- IE9はnulもダメ。互換モードだと\u2028,\u2029通る。
参考
- http://labs.cybozu.co.jp/blog/kazuho/archives/2006/11/js_string_literal2.php
- http://subtech.g.hatena.ne.jp/mala/20101122/1290436563