ホームページ > ウェブフロントエンド > jsチュートリアル > 中国語の文字化けを送信するための JQuery AJAX ソリューション_jquery

中国語の文字化けを送信するための JQuery AJAX ソリューション_jquery

WBOY
リリース: 2016-05-16 18:24:00
オリジナル
924 人が閲覧しました

現象は次のとおりです。

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 ソリューション_jquery

分析: JQuery の AJAX 送信では、送信されるデータがエンコードされ、encodeURIComponent を使用して js でデータが処理されます。したがって、Firefox であっても IE であっても、送信されるデータは一貫性があり、UTF-8 でエンコードされたデータです。

2) ヘッダーを確認し、エンティティの Content-Type に違いがあることを確認します

Firefox では、Content-Type は文字セットを utf-8 として指定します。


中国語の文字化けを送信するための JQuery AJAX ソリューション_jquery

IE8には文字セットの指定がありません。

中国語の文字化けを送信するための JQuery AJAX ソリューション_jquery

分析: デフォルトでは、AJAX の非同期送信の文字エンコーディングは Web ページ自体と一致している必要があります。つまり、サーバーは gb2312 を使用して、表示されている文字セット仕様を見つけずにデータをデコードします (ただし、データは一致しています)。これが IE での文字化けの根本的な原因であり、Firefox では、ブラウザが AJAX データを送信するときに文字セットの表示仕様が追加され、サーバーが UTF-8 を使用して AJAX データをデコードすることになります。データ (正しくデコードされた)。

推論: この中国語の文字化け問題を解決するには、指定された表示文字セットを AJAX に非同期で送信する必要があるようです。

すぐに JQuery の AJAX ツール関数の説明を確認し、オプションに content-type を指定するパラメーターがあることを確認します。

コードをコピー コードは次のとおりです:

jQuery(form).ajaxSubmit({
url: "ajax.aspx?a=memberlogin",
type : " post",
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
成功: showLoginResponse
}); 🎜>
テスト、OK! ! !
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート