最近、私はブラウザのサポートでデータの品質が原因でバグを起こしました。必要がない限り、ダブルサイズなしで文字列エスケープを適用するための安全なルールを探しています。出力でフィルタリングされるべきUnicode文字のリスト?
Unicodeデータベースで完全に有効な文字であるUTF-8バイトシーケンス "E2-80-A8"(U + 2028、ラインセパレータ)。ただし、そのシーケンスは行区切り文字を表します(「はい」、「0A」以外)。
ひどく、多くのブラウザ(Chrome、Firefox、Safariを含む、私は他人をテストしませんでした)は、そのUnicode文字を含む文字列を持つJSONPコールバックの処理に失敗しました。 JSONPは私が何もコントロールしていない非Unicode HTMLに含まれていました。
ブラウザは、デバッグツールとすべてのテキストエディタから有効と思われるこのようなJavaScriptで、INVALID CODE /構文エラーを単に報告しました。私が推測するところは、 "E2-80-A8"をBIG-5に変換してJS構文を破ってしまうかもしれないということです。
上記は、予期せぬことにシステムを壊すUnicodeの例です。私が知る限り、いくつかのハッカーは、RTLと他の制御文字を使うことができます。また、Unicode仕様では、 "引用符"、 "スペース"、 "シンボル"、 "コントロール"が多数あります。
QUESTION:
は、我々は我々のアプリケーションでそれらを効果的たくない場合があります隠された機能(とバグ)について知っているすべてのプログラマのためのUnicode文字のリストがあります。 (たとえば、WindowsではfilenameでRTLを無効にする)。
EDIT:
私はJSONもJavaScriptを求めていません。私は、すべてのプログラムでUnicodeのハンドリングの一般的なベストプラクティスを求めています。文字列がそれらに改行を持つことができないので
ためICU projectを見てください。ブラウザがエンコーディングが明確にUTF-8であるJSONを別のエンコーディングとして誤って解釈すると、そのエラーはブラウザにあります。 *それらは修正する必要があります。 Gimping JSONは解決策ではありません。 – daxim