JQuery
JQuery のデフォルトの contentType: application/x-www-form-urlencoded
文字セットが指定されていない場合、ISO-8859-1 が使用されるのが JQuery の文字化けの原因です。
ISO8859-1、通常は Latin-1 と呼ばれます。 Latin-1 には、すべての西ヨーロッパ言語を記述するために不可欠な追加文字が含まれています。
JQueryのAjaxは国際化の問題を全く考慮しておらず、欧文文字セットを使用していたため、中国語を送信する際に文字化けが発生するという問題がありました。
私たちの UTF-8 はこの問題を解決できます。
最終的には、JQuery コードを変更して、contentType が utf-8 文字セットを使用することを明示的に宣言する必要があることを意味します。これにより、GB2312 中国語送信の問題を解決できます。
1. JQuery コードを変更します
JQuery コードを変更して charset=UTF-8 を追加するだけで済みます。この方法では、web.config を変更したり、ページのエンコーディングを変更したり、escapc を使用したりする必要はありません。 (str) はサーバー側でデコードされます。英語での伝わり方は中国語でも伝わります。
使用する jquery ファイルを変更します: jquery-1.4.4.min.js
ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charset=UTF-8",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest}
2. Js コード:
var wlCompany = $("#wlCompany").val();//これには中国語が含まれます
var wlId = $("#wlId").val();
var提案者 = $("#proposer").val();
if(confirm("商品を交換してもよろしいですか?")){
$.ajax({
タイプ:'POST'、
url:'${pageContext.request.contextPath}/returnGoods/confrimExchangeGoods.do',
data:'wlCompany=' wlCompany '&wlId=' wlId '&proposer=' プロポーザ、//値を直接渡します
dataType:'text',
エラー:関数(){
アラート("JQuery AJAX エラー!");
}、成功:関数(msg){
アラート(メッセージ);
戻る;
if(msg=='交換成功'){
document.location="${pageContext.request.contextPath}/orderItem/queryProduceItem.do?orderBusType=" ${orderBusType};
}
}
});
}
}
HttpServletResponse 応答) が例外をスローします {
log.info("交換確認 confrimExchangeGoods 開始.....");
response.setCharacterEncoding("UTF-8") //ここで設定する必要があります
String wlCompany = request.getParameter("wlCompany");String wlId = request.getParameter("wlId");
文字列プロポーザー = request.getParameter("proposer");
.....
}