私はサーブレット(TomCatでホストされています)にUTF-8文字列をポストしようとしていますが、サーバー側で読み取られる文字列はUTF- Firebug経由で、ajaxヘッダーのcontent-typeにutf-8エンコーディングセットがあることを確認しました。私は "MÉXICO"をサーバーにポストしていますが、 "MÖXICO"を受け取りました。jqueryを使用してサーブレットにUTF-8文字列を投稿します。
$.ajaxSetup({
scriptCharset: "utf-8" ,
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
});
$.ajax({
url: "SetData",
type: 'POST',
data: 'MÉXICO',
success: function(){
console.log('Data set');
}
});
ここでは、Javaコードは、私が( 'メキシコ)encodeURIComponentでのJSでのポスティングデータを変更しますが、サーバーがまだ「MAを読み込み、サーブレット
request.setCharacterEncoding("UTF-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(request, "UTF-8"));
char[] chr = new char[5];
reader.read(chr);
builder.append(chr);
UPDATE 1
にあります‰XICO "と表示されます。
しかし、私はencodeURIComponent( 'MÉXICO')の文字列の値、つまり 'M%C3%89XICO'を取得しています。 私はzappedです!なぜこれがうまくいくのでしょうか?
$.ajax({
url: "SetData",
type: 'POST',
//data: 'MÉXICO', ** does not work
//data: encodeURIComponent('MÉXICO'), ** does not work
data: 'M%C3%89XICO', //works !!!!
success: function(){
console.log('Data set');
}
})
; encodeURIComponentでと
最後に、文字列がハードコードされていないと、なぜウォーキングしていないのかがわかりました。私はドキュメントのcharecter encodinを設定していなかった!ありがとうございました! – webber