Struts 1.3 Ajax调用日语字符编码问题

时间:2017-11-02 13:18:33

标签: javascript java struts-1

我正在使用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上尝试了很多解决方案但不适合我。任何帮助将不胜感激。 感谢您的任何帮助。

1 个答案:

答案 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"));
       }