ホームページ  >  記事  >  ウェブフロントエンド  >  JQueryのAjax_jqueryのPostメソッドにおける漢字文字化け問題の解決方法

JQueryのAjax_jqueryのPostメソッドにおける漢字文字化け問題の解決方法

WBOY
WBOYオリジナル
2016-05-16 16:33:071276ブラウズ

この記事の例では、JQuery での中国郵便送信の問題、つまり ajax および jquery.ajax の中国語パラメータ文字化け送信後の処理方法の解決方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

質問 1:

今日プロジェクトに取り組んでいたとき、GET を使用して中国語のパラメータを渡す必要があり、バックグラウンド プログラムでページのエンコードを GB2312 に設定するだけで中国語が正常に表示されました。 , 今回はフォーム項目が多いため、GETメソッドでの配信には適しておらず、POSTメソッドでしか送信できませんが、バックグラウンドプログラムでエンコードをGB2312に設定すると中国語になってしまうことが分かりました。文字化けしたまま表示されます。いくつかの調査の後、問題は最終的に解決されました。

解決策:

この問題を解決する方法は非常に簡単です。JS でパラメーターを処理するときに、escape() 関数を使用するだけで済み、デコードに unescape() を使用する必要はありません。この方法は、POST と GET に適しています。特定の Ajax コード ここでは例を示しませんが、escape() 関数を使用してパラメーターを処理するコードは次のとおりです。

コードをコピーします コードは次のとおりです:
var htmer ="getcode="escape(getcode) " &Content= エスケープ(コンテンツ);
通常、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 ページのコード:

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

<頭>



<スクリプトタイプ="text/javascript">
関数 DoAjax(){
$.post("AjaxTest.aspx",{txt:$("#tbox1").val()},
関数(データ){
$("#AjaxResponse").text(data);
}
);
}


AjaxTest





AjaxTest.aspx 処理ページ:

コードをコピー コードは次のとおりです:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>

さらに、Ajax のデフォルトの中国語文字エンコーディングは utf-8 であるため、より安全な方法は、関係するページの統一エンコーディング形式が utf-8 であることを確認することです。

この記事が皆さんの jQuery ベースの Ajax プログラミングに役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。