ホームページ >ウェブフロントエンド >jsチュートリアル >jqueryの文字化けコードとcontentType属性設定の問題解決_jquery

jqueryの文字化けコードとcontentType属性設定の問題解決_jquery

WBOY
WBOYオリジナル
2016-05-16 17:44:23994ブラウズ

今日は暇なので、頭痛を引き起こすJQueryの文字化け問題など、過去に残った問題を解決したいと思います。実際、この分野にはすでに多くの記事がありますが、さまざまな問題を包括的に解決しているものはほとんどありません。今日は、私自身の便宜とみんなの便宜のためにそれらを要約します。

理由は非常に簡単です: 実際、彼の中国語文字化けは、Jquery のバージョンごとにこの場所の設定が異なるためです。 jquery-1.6.1 と jquery-1.8.3 では定義が異なります。

解決策: jquery-1.6.1 ファイルで、「contentType」を検索し、application/x-www-form-urlencoded の後に charset=UTF-8 を追加します。これを contentType: "application/x-www-form-urlencoded; charset=UTF-8" に変更します。
これでpostメソッドで投稿後の文字化け問題は完全に解決できます。

それでも文字化けが発生する場合は、受信したページのエンコーディングに問題があるとしか言えません。これは、非同期オブジェクト XMLHttpRequest が返された応答テキストを処理するときに UTF-8 エンコーディングをデコードしているためです。 。したがって、post メソッドを使用する場合は、このページを保存し、ページ ファイルのエンコードを UTF-8 に変更する必要があります (覚えておいてください)。
jqueryの文字化けコードとcontentType属性設定の問題解決_jquery
修正前はFROMフォームデータ全体が文字化けしていましたが、上記の方法で簡単に解決できます。

以下は、インターネットから得たいくつかの特殊な状況の要約です:
JQuery Ajax 送信での中国語の文字化けに対する解決策 2
これまで JQuery を使用していたときは見つかりませんでしたが、必ず見つかります。 Ajax で送信すると文字化けが発生します。エンコーディングが原因である可能性があります。

次の理由が考えられます。:
1. HTML のエンコーディングが統一されていません。たとえば、このページでは GB2312 が使用されていますが、JQuery はあまりよくサポートされていないようです。以前は常に UTF-8 を使用していましたが、これを見つけたことがありません。
2. ファイルのエンコードは、簡体字中国語バージョンで保存されたデフォルトのテキスト形式ファイルです。オペレーティング システムは GB2312 です。文字化けが発生しないように、JS エスケープを使用してファイルを UTF-8 形式に変更することをお勧めします。
例:

コードをコピー コードは次のとおりです:
//保存data
$.ajax({
url:"/guide/savecomments.aspx" ,
type:"POST" ,
dataType:"json" ,
data:"Action=SaveComment&CommNickName =" エスケープ( CommNickName.val()) "&CommContent=" エスケープ(CommContent.val()) "&GuideID=" GuideID.val() "&ScoreLogType=<%=ScoreLogType %>",
success:function (結果){
alert(results.message)

---------------------- ---------- -------------------------------------- --
解決策はjsのエンコード関数encodeURIComponent(string)を使って中国語の「Wang Xiaoming」を「Wang Xiaoming」にエンコードすればOKです
ちなみにURIEncoding=UTF-8私の雄猫の下
------------------------------------------ ---- ----------------------------------
今日、jquery を使用してユーザー名を検出すると、英語と数字のユーザーの場合、名前の検出は正しいですが、中国語に関しては、検出が間違っています。しばらくネットで検索した結果、文字化けしたコードの問題が原因であることがわかりました。 > 1. ajaxでデータ送信がある限り、ページエンコーディングがutf-8でない場合、送信されたデータはjsのエンコード関数でエンコードする必要があります
2. データを受信したらデコードします。サーバーページでデータをエンコードし、エンコード前にデータに関連する処理を実行します
3. クライアントに戻った後にデコードします
4. データが送信されず、データがサーバーから直接取得される場合は、設定するだけですResponse.Charset="gb2312" は、エンコードとデコードを行わずにサーバー ページ上で直接実行されます。
vbscript は、js のエスケープ() および unescape() 関数プログラム コードに対応します
----------- ----------------- --------------------------------- -----------------

以下の処理方法で解決します
: パラメータpriceName="encodeURI(priceName)"をエンコードする場合パラメータを渡すか、encodeURIComponent(); を使用できます。サーバー側でこれを行う必要はありません。その他の処理: String PriceName = request.getParameter("priceName");
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。