ajax 设置utf,(Spring + JSP + jQuery-AJAX + JSON)设置UTF-8问题的环境?

我在java做chat project与Spring 3.x这就需要Multi-language support。(Spring + JSP + jQuery-AJAX + JSON)设置UTF-8问题的环境?

这是我所做的。

我的JSP有:

我web.xml有:

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

characterEncodingFilter

/*

在我Tomcat server.xml有:

我我Java environment有:

JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8

在我Spring-controller有:

@RequestMapping(value="sendMessage.html",method=RequestMethod.POST)

public @ResponseBody String sendMessage(HttpSession session,@RequestParam String intxnId,@RequestParam String message, HttpServletRequest request,HttpServletResponse response){

String contentType= "text/html;charset=UTF-8";

response.setContentType(contentType);

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

response.setHeader("Content-Type", "application/json; charset=UTF-8");

try {

request.setCharacterEncoding("utf-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setContentType("text/plain;charset=UTF-8");

System.out.println("Send Message UTF-8 ----------------- "+ message);

String json = null;

BasicChatProtocol protocol = CustomerManagement.protocol.put(intxnId, chatProtocol.getProtocol());

HashMap result = send.send(message, intxnId, protocol);

result.put("name",(String) session.getAttribute("nickName"));

ObjectMapper map = new ObjectMapper();

if(result.size()!= 0){

try {

json = map.writeValueAsString(result);

result.clear();

result = null;

System.out.println("Send Message :::::::: : "+json);

} catch (Exception e) {

e.printStackTrace();

}

}

return json;

}

我jQuery-AJAX将是:

function sendMessage(){

var intxnId = $("#hide").val();

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

alert("send : \n intxnId : "+intxnId+"\nmessage : "+message);

$.ajax({

type: "POST",

cache: false,

url: contexPath + "/sendMessage.html",

async: true,

contentType: "application/x-www-form-urlencoded; charset=utf-8",

scriptCharset: "utf-8",

dataType: 'html',

data: "intxnId=" + intxnId +"&message="+ encodeURIComponent(message),

success: function(response){

if(response != null && response !="" && response !="null"){

var txt = '{"data":['+response+']}';

var json = eval ("(" + txt + ")");

for(i =0;i

var data = json.data[i];

var name = data.name;

var message = data.message;

var time = data.time;

alert("Name : "+name+"\nMessage : "+message+"\ntime : "+time);

var createHTML = send(name,message,time);

$("#messageDisplayArea").append(createcreateHTML);

};

}

},

error: function(e){

alert('Error: ' + e);

},

});

}

但是,当我将本地的语言信息அவர்களுக்கு(泰米尔语),我在alert box只拿到了???????和view page。

但我在控制台(SysOut in controller)和所有Special Characters工作得到local language。

注:我觉得我有response from the controller。因为这个问题时,我送message到controller我javascript alert得到了message as small boxes。但是,当response来了我得到?????在alert box。

我的控制台打印,

Send Message UTF-8 ----------------- அவர்களுக்கு

Mesge what I send :::: அவர்களுக்கு

Send Message :::::::: : {"message":"அவர்களுக்கு","time":"time","name":"Human"}

我不知道我错过了什么。我不使用任何data base。

希望我们的堆栈用户能给出更好的解决方案。很好的答案是肯定的赞赏。

+0

你在哪里得到那些??????字符?在弹簧控制器中,在控制台中?我很确定你的javascript发送的是wright字符 –

+0

在控制器'sysout'中,我在控制台中获取本地语言。但是在'alert box'和'view page'中,我得到'???? ?' –

+0

我想我有''controller'响应的问题。因为当我把'message'发送给'controller'时,''''''''''''在'但是当回应来临时,我得到了警告框中的'?????'。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值