2013-06-21 75 views
0

我試圖使用控制器來發送一個字符串,如對AJAX請求的響應。但不幸的是,在客戶端,所有的角色變得像'?'。所有字符都來自俄文字母。我會感謝任何幫助。謝謝!下面是位指示代碼:Spring MVC,響應AJAX,俄羅斯符號

@RequestMapping("/getfield") 
    @ResponseBody 
    public Object getField(@RequestParam String fieldName) { 
     //returns String full of characters from russian alphabet 
     return pageBuilder.getMultipleChoiceField(fieldName); 
    } 

AJAX處理:

$('#submit').click(function() { 
     var drop = document.getElementById('Select_chzn'); 
     var spans = drop.getElementsByTagName('span')[0]; 
     var chosen = spans.innerHTML; 

     $.post('${pageContext.request.contextPath}/getfield', 
       { 
        'fieldName': chosen 
       }, 
       function (result) { 
        var content = document.getElementById('content'); 
        alert(result); 
        content.innerHTML = content.innerHTML + result; 

       }); 
     setTimeout(function() { $(".chzn-select").chosen(); }, 50); 
     event.preventDefault(); 
    }); 
    }); 

回答

0

好了,事實證明,我必須在發送給客戶之前,所有的符號UTF8代碼;所以我必須將String編碼爲UTF8,然後發送到客戶端;

@RequestMapping("/getfield") 
    @ResponseBody 
    public Object getField(@RequestParam String fieldName) { 
     byte[] fieldCharactersArray = null; 
     try { 
      fieldCharactersArray = pageBuilder.getMultipleChoiceField(fieldName). 
getBytes("UTF8"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return fieldCharactersArray; 
    } 

乾杯!希望這會幫助別人!