この記事の例では、JQuery での中国郵便送信の問題、つまり ajax および jquery.ajax の中国語パラメータ文字化け送信後の処理方法の解決方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
質問 1:
今日プロジェクトに取り組んでいたとき、GET を使用して中国語のパラメータを渡す必要があり、バックグラウンド プログラムでページのエンコードを GB2312 に設定するだけで中国語が正常に表示されました。 , 今回はフォーム項目が多いため、GETメソッドでの配信には適しておらず、POSTメソッドでしか送信できませんが、バックグラウンドプログラムでエンコードをGB2312に設定すると中国語になってしまうことが分かりました。文字化けしたまま表示されます。いくつかの調査の後、問題は最終的に解決されました。
解決策:
この問題を解決する方法は非常に簡単です。JS でパラメーターを処理するときに、escape() 関数を使用するだけで済み、デコードに unescape() を使用する必要はありません。この方法は、POST と GET に適しています。特定の Ajax コード ここでは例を示しませんが、escape() 関数を使用してパラメーターを処理するコードは次のとおりです。
質問 2:
Web サイトのページが utf-8 でエンコードされていない場合、ajax によって送信された中国語が文字化けします。
解決策は次のとおりです:
jquery.js で contentType:application/x-www-form-urlencoded を見つけて、contentType:application/x-www-form-urlencoded に変更します。charset=UTF-8。
原因: charset が指定されていない場合、jquery は ISO-8859-1、ISO8859-1 (通常は Latin-1 と呼ばれます) を使用します。 Latin-1 には、すべての西ヨーロッパ言語を記述するために不可欠な追加文字が含まれています。 jqueryのajaxは国際化を全く考慮しておらず、欧文文字セットを使用しているため、中国語を送信すると文字化けが発生します
私はずっと前から Prototype フレームワークを使用しています。私はこれを .net-GB2312 または jsptutorial-utf8 で使用しましたが、文字エンコーディングの問題に遭遇したことはありません。そこで、プロトタイプと JQuery コードの両方をダウンロードして開いて、理由を調べました。違いは、JQuery のデフォルトの contentType: application/x-www-form-urlencoded であることです
プロトタイプは contentType:application/x-www-form-urlencoded charset=UTF-8 です
文字セットを指定しないと ISO-8859-1 が使用されるのが JQuery の文字化けの原因です
ISO8859-1、通常は Latin-1 と呼ばれます。 Latin-1 には、すべての西ヨーロッパ言語を記述するために不可欠な追加文字が含まれています。
JQueryのAjaxは国際化の問題を全く考慮しておらず、欧文文字セットを使用していたため、中国語を送信する際に文字化けが発生するという問題がありました。
私たちの UTF-8 はこの問題を解決できます。
最終的には、JQuery コードを変更して、contentType が utf-8 文字セットを使用することを明示的に宣言する必要があることを意味します。これにより、GB2312 中国語送信の問題を解決できます。
JQuery コードを変更して charset=UTF-8 を追加するだけで済みます。この方法では、web.config を変更したり、ページのエンコーディングを変更したり、escapc を使用したりする必要はありません。 (str) はサーバー側でデコードされます。英語での伝わり方は中国語でも伝わります。
テストする簡単なコードは次のとおりです:
test.html ページのコード: