杰克逊映射器具有特殊字符é问题

时间:2014-03-17 14:50:37

标签: java json angularjs jackson

您好我的网页提交了一个像José Luis Calleja Garcia

这样的字符

但在服务器中,它会转换为José Luis Calleja Garcia

我不知道我做错了什么。我应该将其设置为José Luis Calleja Garcia

我在角度服务

中提交这样的多部分请求
var config = {
    method: "POST",
    url: 'some url',
    headers: { 'Content-Type': false },
    transformRequest: function (data) {
        var formData = new FormData();  
        formData.append("model", angular.toJson(data.getFormDefinition()));
            for (var i = 0; i < data.files.length; i++) {
                formData.append(data.files[i].name, data.files[i]);
            }
            return formData;
        },
    data:requestModel   
};

我的服务器端对象映射器配置就像这样

public class CustomViewObjectMapper extends ObjectMapper{

    public CustomViewObjectMapper() {
        super();

        this.setAnnotationIntrospector(new JaxbAnnotationIntrospector());
        this.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
        this.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);   
    }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

é的Unicode代码点是U + 00E9,在UTF-8中变为0xC3 0xA9。现在,在ISO-8859-1中,0xC3是Ã,而0xA9是©。因此,您似乎以UTF-8发送数据,但将其解释为ISO-8859-1。

或者,您可以尝试添加内容类型标题:

Content-Type: application/json; charset=utf-8

确保服务器正确解释它。