当前位置: 首页 > 知识库问答 >
问题:

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

井礼骞
2023-03-14

因此,当使用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;
}

它的返回消息不是utf-8编码。因此,当从rest客户端接收对象时,我需要有关编码的帮助。

共有1个答案

东方旺
2023-03-14

使用应用程序/json向@RequestMapping添加消耗生成;charset=UTF-8,请参见

@RequestMapping(value="/update", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_UTF8, produces=MediaType.APPLICATION_JSON_UTF8)
 类似资料:
  • 问题内容: 我在字符串列表的json.Marshal上得到这个: 原因很明显,但是如何在Go中删除/替换这样的字符串?我一直在阅读docst 和包,似乎没有明显/快速的方法。 例如,在Python中,您可以使用一些方法删除无效字符,将其替换为指定字符或严格设置,这会导致无效字符的异常。如何在Go中做等效的事情? 更新:我的意思是得到异常的原因(紧急?)-json.Marshal期望有效的UTF-8

  • 我有一个ASP.NET WebService,如下所示: ??-??-?? 这是一个考验 如何配置WebService以接受UTF-8编码的字符串?

  • 问题内容: 我目前正在从事一个项目,我不使用常规的MySQL查询,而是继续学习如何使用PDO。 我有一个称为参赛者的表,数据库,表和所有列均位于utf-8中。我的参赛者表中有10个条目,而它们的“名称”列中包含诸如åäö之类的字符。 现在,当我从数据库中获取一个条目并使用var_dump的名称时,我得到了一个很好的结果,即一个包含所有特殊字符的字符串。但是我需要做的是按字符分割字符串,将它们放入数

  • 问题内容: 如何在Swift中将字符串转换为Unicode(UTF-8)字符串? 在Objective中,我可以这样写: 如何在Swift中做类似的事情? 问题答案: 使用此代码, 希望对您有所帮助

  • 问题内容: iconv函数有时会给我一个错误: 有没有办法在将数据放入inconv之前检测到utf-8字符串中存在非法字符? 问题答案: 首先,请注意,无法检测文本是否属于特定的不需要的编码。您只能检查字符串在给定编码中是否有效。 您可以使用从PHP 4.3.5 开始在 可用的UTF-8有效性检查。如果给出了无效的字符串,它将返回(没有其他信息): 另一种可能是[ 您可以使用的另一个功能是[ 将参