2011-02-22 9 views
1

私は私のテキストフィールドonkeyupのイベントには、このバインドを持っている:はJQueryのAjaxの文字エンコーディングの問題

function ajaxSearch(sstring,miszerint,startrow,Valid,notValid) { 
setTimeout(function query(){ 
    if (sstring.length <= 3) 
    { 
     $("#external").html("<p>min 3 chars please.</p>") 
    } 
    else 
    { 
    $('#loading').ajaxStart(function() { 
     $(this).show() 
     $("#external").hide() 
    }); 

    $('#loading').ajaxComplete(function() { 
     $(this).hide() 
     $("#external").show() 
    }); 

    $.ajax({ 
     type:"GET", 
     url: "/myApp/getStd", 
     contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
     dataType:"application/x-www-form-urlencoded; charset=UTF-8", 
     data:"sstring="+escape(sstring)+"&options="+miszerint+"&startrow="+startrow+"&valid="+Valid+"&notValid="+notValid+"&searchForm=1", 

       async: true, 
     success: function(data){ 
     $("#external").html(data); 

     } 
    }) 
    } 
},1500) 
} 

問題は、私は「私のサーブレット戻っテキストフィールドにハンガリーの文字を(例えば、æőűúíéá)」を入れたときに「代わりに提供炭の

私はアヤックスせずに直接サーブレットを照会する場合は、それが正常に動作しJSPで 私が定義されています。。

<%@page contentType="text/html" pageEncoding="UTF-8"%> 

プラス

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

サーブレットでは、応答文字セットを「UTF-8」に設定しました。何か案は?

答えて

0

あなたはURLエンコードのクエリパラメータのためencodeURIComponent()の代わりescape()を使用する必要があります。または、より良い、JSオブジェクトとしてそれを提供し、jQueryのは、URLエンコードを心配します。

data: { 
    "sstring": sstring, 
    "options": miszerint, 
    "startrow": startrow, 
    "valid": Valid, 
    "notValid": notValid, 
    "searchForm": 1 
} 
0

サーブレットで出力ストリームを作成するときは、UTF8文字セットを使用します。このような 何か:

resp.setCharacterEncoding("UTF-8"); 
OutputStream os = resp.getOutputStream(); 
BufferedWriter bos = new BufferedWriter(new OutputStreamWriter(os,"UTF8")); 
関連する問題