jquery.ajaxのurlで中国語の文字化けし問題を伝える解決方法

2595 ワード

JQuery
JQueryデフォルトcontentType:アプリケーション/x-www-form-urlencoded
これこそJQueryが文字化けしている理由で、文字セットが指定されていない場合はISO-8859-1を使用します
ISO 8859-1、通常Latin-1と呼ばれています.Latin-1には、すべての西洋ヨーロッパ言語を書くのに不可欠な付加文字が含まれています.
JQueryのAjaxは国際化の問題を全く考慮せず、ヨーロッパの文字セットを使用しているため、中国語を伝えるのに文字化けして問題が発生している.
私たちのUTF-8はこの問題を解決することができます.
最終的にはJQueryのコードを修正し、contentTypeがutf-8文字セットを使用することを明示的に宣言することで、GB 2312の中国語伝達の問題を解決することができる.
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コード:
 
  
function confirmcommit(){

    var wlCompany = $("#wlCompany").val();//

    var wlId = $("#wlId").val();

    var proposer = $("#proposer").val();

    if(confirm(" ")){

$.ajax({

type:'POST',

url:'${pageContext.request.contextPath}/returnGoods/confrimExchangeGoods.do',

data:'wlCompany='+wlCompany+'&wlId='+wlId+'&proposer='+proposer, //

dataType:'text',

error:function(){

    alert("JQuery AJAX Error!");     

},

success:function(msg){

    alert(msg);

    return;

    if(msg==' '){

 document.location="${pageContext.request.contextPath}/orderItem/queryProduceItem.do?orderBusType="+${orderBusType};

    }

}

});

     }

 }


3 .Javaコード:
 
  
public ActionForward confrimExchangeGoods(ActionMapping mapping,

ActionForm form, HttpServletRequest request,

HttpServletResponse response) throws Exception {

log.info(" confrimExchangeGoods start...............");

response.setCharacterEncoding("UTF-8"); //

String wlCompany = request.getParameter("wlCompany");

String wlId = request.getParameter("wlId");

String proposer = request.getParameter("proposer");
     .....
}