jQuery 1.7.2 で古いバージョンの backbone.js (0.5.3) を使用しています。Backbone.sync が実行されると (jQuery $.ajax() のラッパー)、contentType が次のように明示的に設定されます。
params.contentType = 'application/json';
これは私が望むもののように見えますが、コンテンツは utf-8 として送信されていないようです。私は ndash でテストしています。ここに私のサンプル文字列があります:
Mathematics K–10
サーバーに送信した後、次のようになります。
Mathematics K–10
ここで、(backbone.js 内の) contentType を次のように変更すると:
params.contentType = 'application/json; charset=utf-8';
すべてが期待どおりに機能し、正しい ndash 文字を取得します。これは、バックボーンの元の contentType 行をコメントアウトした場合の動作でもあります。
jQuery のドキュメントでは、次のことが提案されています。
データは常に UTF-8 文字セットを使用してサーバーに送信されます
ただし、contentType を明示的に設定する場合は、文字セットも設定する必要があるようです。
私の質問は、この動作は理にかなっていますか? contentType を明示的に変更したとしても、(jQuery のドキュメントにあるように) デフォルトを常に utf-8 にしたいと思っていたでしょう。他の誰かがこれに遭遇したか、私を助けるかもしれない情報を持っていますか?