« Mozilla Firefox の JavaScript インタプリタが特定文字を読み落とす件 (JSON のエスケープ) | メイン | 「ITアーキテクト」誌のインタビュー »
2006年11月07日
JavaScript の文字列定数でエスケープが必要な文字
Re: Mozilla Firefox の JavaScript インタプリタが特定文字を読み落とす件、ということでまとめ。
JavaScript の文字列定数でエスケープが必要な文字は、下表のとおりウェブブラウザによって異なるようです。
NUL | LF | CR | \ | クォート文字 | U+200C - U+200F | U+2028 | U+2029 | U+202A - U+202E | U+206A - U+206F | U+FEFF | |
ECMA 仕様 | x | x | x | x | x | x | |||||
Firefox 1.5/2.0 | x | x | x | x | x | x | x | x | x | x | |
IE 6/7 | x | x | x | x | x | ||||||
Opera 9 | x | x | x | x | x | x | |||||
Safari 2.0.4 | x | x | x | x | x |
IE、 Firefox、 Safari ともに ECMAScript の仕様を満たしていません。IE6 は ECMAScript の仕様に対して上位互換だと言えるでしょうから、実質的に問題を抱えているのは Firefox のみ、ということになるのでしょうか。JSON を使う際には、注意が必要、と。
Firefox に関して言えば、 (Control Character があるとエラーになるのではなく読み落とすという性質からして) 仕様ではなくバグだと考えるのが妥当なのかなと思いました。
参考: テストコード
10:28 追記: NUL 文字について表に含めるのを忘れていたので追加しました
10:48 追記: Safari を追加
2009/02/17 追記: Firefox のバグは 2008 年 8 月に修正されたようです (ChangeLog の3.147)
投稿者 kazuho : 2006年11月07日 06:45
トラックバック
このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/876