最近、中国語のパラメータを渡す必要があるという問題に遭遇しました。インターネットで検索すると、あちこちにコピペされた「究極の」「解決策」は、escape(str) でトランスコードし、サーバー上でメソッドを書いて再度編集するか、System.Text.Encoding Change を使用するだけです。次のメソッドを前後に実行します。
私はずっと前から Prototype フレームワークを使用しています。私はこれを .net-GB2312 または jsp-utf8 で使用しましたが、文字エンコーディングの問題に遭遇したことはありません。そこで、プロトタイプと JQuery コードの両方をダウンロードして開いて、理由を調べました。具体的な結果は以下の通りです
違いは、JQuery のデフォルトの contentType: application/x-www-form-urlencoded
と、プロトタイプが contentType: application/x-www-form-urlencoded; であることです。 🎜>これが、文字セットが指定されていない場合、ISO-8859-1 (通常は Latin-1 と呼ばれます) が使用される理由です。 Latin-1 には、すべての西ヨーロッパ言語を記述するために不可欠な追加文字が含まれています。
JQueryのAjaxは国際化の問題を全く考慮しておらず、欧文文字セットを使用していたため、中国語を送信する際に文字化けが発生するという問題がありました。
私たちの UTF-8 はこの問題を解決できます。
最終的には、JQuery コードを変更して、contentType が utf-8 文字セットを使用することを明示的に宣言する必要があることを意味します。これにより、GB2312 中国語送信の問題を解決できます。
次のように変更します:
JQuery コードを変更して charset=UTF-8 を追加するだけで済みます。この方法では、web.config を変更したり、ページのエンコーディングを変更したりする必要はありません。サーバー側でデコードするために escapc(str) を使用する必要はありません。英語での伝わり方は中国語でも伝わります。 簡単なコードをテストします:
test.html: