jqueryを使用してhtml5アプリケーションを処理する場合、Firefoxでのテストは正常でした。ユーザーがパッドでアクセスすると、文字化けが発生すると表示されました。
自分でテストしたところ、確かにこの問題が存在することがわかりました。この問題では、ページ属性が utf-8 に設定されている場合、Firefox のみが charset=utf-8 ヘッダー ファイルを渡します
Chrome と IE が指定されていないため、文字化けが発生します
。解決策:
$.ajaxSetup({ contentType: "application/x-www -form-urlencoded; charset=utf-8"
});
$.post("test.php", { name: "i5a6", time: "2pm " },
function(data ){
process(data);
}, "json");
または次を使用します:
$.ajax({
url:url,
type: " POST",
data:data,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: "json",
success: function() {
...
}
})
最初のものを使用することをお勧めしますが、実際の状況に基づいて、encodeURIComponent を使用することを推奨する人もいます。文字変換
Ajax が文字化けしたデータを送信した経験をまとめます
コードの文字化けを回避するには、次の手順を実行できます
解決策
1. ファイル エンコーディング、データベース エンコーディング、および Web ページのコンテンツ タイプのエンコーディング
チェック
次の場合は UTF-8 を使用することをお勧めします。中国語。gbk/gb2312 を使用すると文字化けが発生する可能性があります
2. get の代わりに post を使用して送信します
get メソッドはリンク経由でパラメータを渡し、自動的に urlEncode (エンコード) を実行し、各ブラウザのエンコード方法を実行します。異なる場合があります。 post を使用すると、この状況を回避できます。
3. js フロントエンドでエンコードをエスケープして送信し、バックグラウンドでデコードしてデータを取得します。
これらはオンラインで検索できます。
4. contentType をグローバルに設定し、 jquery ajax は送信データのエンコードに utf-8 を使用するため、エンコード
が使用されますが、IE は送信時に charset=utf-8 を追加しないため、文字化けが発生します (IE はデフォルトで iso-8859-1 エンコードを使用します)
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded; charset=utf-8"
});