IE11 で奇妙な問題が発生しました。以下を考慮してください (riot.js フレームワークの一部):
var s = "{JSON.stringify(\\{ amount: Math.floor(reward.amount) \\})}";
var s1 = s.replace(/\\{/g, '\uFFF0');
このコードを localhost で実行すると、正常に動作します。しかし、ステージング環境から実行すると、\{
フラグメントは\uFFF0
(コードポイント 65520) ではなく\uFFFD
(コードポイント 65533) に置き換えられます。つまり、後で特殊文字を に戻そうとすると失敗します{
。
メソッドはブラウザのreplace
ネイティブ メソッドです。HTML (文字列は DOM 属性) と JavaScript の両方を含むファイルは、サーバーによってcharset=utf-8
ヘッダー付きで返され、そのようにエンコードされます。ステージング環境では、他のファイルにバンドルされ (圧縮やマングリングではありません)、引き続き utf-8 でエンコードされます。
なぜそうするのか、なぜ体系的でないのか、私にはわかりません。