現象は次のとおりです。
1) Firefox では、処理ページのエンコーディングは gb2312 で、データの送信に問題はなく、中国語は正しく解析できます。
2) IE8 では、処理ページのエンコードが gb2312 であり、送信された中国語データが文字化けして表示されます。
$.post、$.ajax、または (Form プラグインからの) $.ajaxSubmit のいずれであっても、以前の UTF-8 でエンコードされた Web サイトでは問題はありませんでした。これは、エンコードが原因であるようです。データを送信する Web ページの形式が原因です。いずれにせよ、ブラウザごとに違いがあるため、HTTP パッケージを見て何が問題なのかを確認してみましょう。
Fiddle を開き、Firefox と IE を使用して AJAX 送信を作成し (ユーザーのログインを例として)、HTTP ヘッダーを確認して、
を見つけます。1) 以下の図に示すように、2 つのブラウザーによって送信されたフォーム データは一貫しており、UTF-8 でエンコードされています。
分析: JQuery の AJAX 送信では、送信されるデータがエンコードされ、encodeURIComponent を使用して js でデータが処理されます。したがって、Firefox であっても IE であっても、送信されるデータは一貫性があり、UTF-8 でエンコードされたデータです。
2) ヘッダーを確認し、エンティティの Content-Type に違いがあることを確認します
Firefox では、Content-Type は文字セットを utf-8 として指定します。
IE8には文字セットの指定がありません。
分析: デフォルトでは、AJAX の非同期送信の文字エンコーディングは Web ページ自体と一致している必要があります。つまり、サーバーは gb2312 を使用して、表示されている文字セット仕様を見つけずにデータをデコードします (ただし、データは一致しています)。これが IE での文字化けの根本的な原因であり、Firefox では、ブラウザが AJAX データを送信するときに文字セットの表示仕様が追加され、サーバーが UTF-8 を使用して AJAX データをデコードすることになります。データ (正しくデコードされた)。
推論: この中国語の文字化け問題を解決するには、指定された表示文字セットを AJAX に非同期で送信する必要があるようです。
すぐに JQuery の AJAX ツール関数の説明を確認し、オプションに content-type を指定するパラメーターがあることを確認します。