Python 2.7 Django + AngularJS アプリがあります。データ モデルにフィードする入力フィールドがあり、データは Angular の $http を使用してサーバーに送信されます。入力フィールドに文字 "é" が含まれている場合、Django はそれを好みません。「★é」を使うと Django では問題ありません。latin1 文字セットの外側にあるスター文字はエンコードを utf-8 に強制するように思えますが、非ラテン文字のみが「é」の場合、Angular はデータを latin1 として送信し、Python コードを混乱させます。
Django からのエラー メッセージは次のとおりです。
サーバーの simplejson.loads() 関数に、ISO-8859-1 (latin1) エンコーディングを使用してデータを読み取るように指示すると、入力文字列に é のみが含まれ、スターが含まれていない場合に正常に機能したため、データが星のような非 latin1 文字によって utf-8 に強制されない限り、ブラウザは latin1 です。
常に utf-8 を使用してデータを送信するように Angular に指示する方法はありますか?
データをサーバーに送信する Angular コード:
$http({
url: $scope.dataUrl,
method: 'POST',
data: JSON.stringify({recipe: recipe}),
headers: {'Content-Type': 'application/json'}
}).success(...).error(...);
データを読み取る Django コード:
recipe = simplejson.loads(request.raw_post_data)['recipe']