最近、ブラウザのサポートでデータ品質が原因でバグが発生しました。必要な場合を除き、ダブルサイズなしで文字列エスケープを適用するための安全なルールを探しています。
UTF-8 バイト シーケンス "E2-80-A8" (U+2028、LINE SEPARATOR)、Unicode データベースで完全に有効な文字。ただし、そのシーケンスは行区切り記号を表します (はい、「0A」以外)。
そして残念なことに、多くのブラウザー (Chrome、Firefox、Safari など。他はテストしていません) は、その Unicode 文字を含む文字列を持つ JSONP コールバックを処理できませんでした。JSONP は、私が制御できない非 Unicode HTML に含まれていました。
ブラウザーは、デバッグ ツールやすべてのテキスト エディターから有効に見える JavaScript で無効なコード/構文エラーを報告するだけでした。私が推測するのは、「E2-80-A8」をBIG-5に変換しようとして、JS構文が壊れた可能性があるということです。
上記は、Unicode がシステムを予期せず破壊する可能性のある例にすぎません。私の知る限り、一部のハッカーは RTL やその他の制御文字を自分の利益のために使用できます。また、Unicode 仕様には「引用符」、「スペース」、「記号」、「コントロール」が多く含まれています。
質問:
すべてのプログラマーがアプリケーションで有効にしたくない隠れた機能 (およびバグ) について知っておくべき Unicode 文字のリストはありますか? (たとえば、Windows はファイル名で RTL を無効にします)。
編集:
JSON も JavaScript も求めていません。すべてのプログラムでの Unicode 処理の一般的なベスト プラクティスを求めています。