0

我正在尝试使用控制器发送一个字符串,比如对 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();
    });
    });
4

1 回答 1

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;
    }

干杯! 希望这会对某人有所帮助!

于 2013-06-21T13:02:39.003 回答