2

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']
4

1 に答える 1