« Mozilla Firefox の JavaScript インタプリタが特定文字を読み落とす件 (JSON のエスケープ) | メイン | 「ITアーキテクト」誌のインタビュー »

2006年11月07日

JavaScript の文字列定数でエスケープが必要な文字

 Re: Mozilla Firefox の JavaScript インタプリタが特定文字を読み落とす件、ということでまとめ。

 JavaScript の文字列定数でエスケープが必要な文字は、下表のとおりウェブブラウザによって異なるようです。

表. JavaScript の文字列定数でエスケープが必要な文字
NULLFCR\クォート文字U+200C - U+200FU+2028U+2029U+202A - U+202EU+206A - U+206FU+FEFF
ECMA 仕様xxxxxx
Firefox 1.5/2.0xxxxxxxxxx
IE 6/7xxxxx
Opera 9xxxxxx
Safari 2.0.4xxxxx

 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