使用 RestTemplate 时无法在 LinkedHashMap 中接收带有字符串的 UTF-8 格式

Cannot Receive UTF-8 format with String in LinkedHashMap when using RestTemplate

所以当使用restTemplate 发送数据从restclient 接收数据时,我遇到了字符编码问题。这是我的示例代码:

这是我的客户端代码;我已经收到 UTF-8 编码的数据:

rest.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));

Map<String,Object> params = new HashMap<String,Object>();
params.put("modelname","character without utf-8");
MyModel oldModel = rest.postForObject(MYMODEL_SERVICE_URI + "/get", params, MyModel.class);//it return perfect model with utf-8 encoded
oldModel.setContent("Tôi muốn cập nhật model này với định dạng UTF-8");

MyModelWrapper wrapper = new MyModelWrapper();
wrapper.add(oldModel);
params.put("newmodel", wrapper);
Message message = rest.postForObject(MYMODEL_SERVICE_URI + "/update", params, Message.class);//class message contains the message back and the status of that message in boolean
System.out.println(message);

这是我的服务代码

@RequestMapping(value="/update", method=RequestMethod.POST)
@ResponseBody
public Message update(@RequestBody Map<String, Object> params){
    .....
    LinkedHashMap<String,Object> map = (LinkedHashMap<String,Object>params.get("newmodel");
    Iterator<String> iter = map.keySet().iterator();
    String key = "";
    while(iter.hasNext()){
        key = iter.next();
        System.out.println(map.get(key));//returned the string value is not in utf-8 format
        //some method casting linkedhashmap to MyModel 
    }

    ....
    return message;
}

并且它的return消息不是utf-8编码。所以我需要有关从 rest-client 接收对象时编码的帮助。

consumesproduces 添加到 @RequestMappingapplication/json;charset=UTF-8 并查看

@RequestMapping(value="/update", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_UTF8, produces=MediaType.APPLICATION_JSON_UTF8)