我正在使用Java 1.7和struts 1.3框架。我在为日本客户工作。目前我的要求是使用JQuery Ajax调用将Search键(包含日语字符串)发送到Action类。但在行动方面,我发现一些日文字符已损坏。
我的代码:
var searchKey = $('#searchtxt').val();
// some Japanese string value for search.
var data = {
// other properties
"searchKey": searchKey,
// Other properties
};
$.ajax({
type: 'POST',
url: url,
data: data,
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function (resultData){//dostuff}
});
我很新,所以我不知道如何格式化。
我在SO上尝试了很多解决方案但不适合我。任何帮助将不胜感激。 感谢您的任何帮助。
答案 0 :(得分:0)
要解决此日语编码问题,请使用URL编码机制,然后通过ajax调用发送数据。然后在Struts动作方面,您只需要使用URL解码器机制对其进行解码。 它会解决这个问题。 为了更清晰,请参阅以下代码。
在Java脚本端,从隐藏字段获取数据时使用URL编码方法:
var searchKey = encodeURIComponent($('#searchtxt').val().trim());
// It will encode the Japanese string before send from Ajax call.
在Struts Action端使用URLDecoder类来解码字符串值:
String searchKey=form.getSearchKey();
if(!searchKey.isEmpty()) //Check for empty or null string
{
// Decode the string using URLDecoder class from java.net package
form.setSearchKey(URLDecoder.decode(searchKey, "UTF-8"));
}