美文网首页
报文编码格式改为UTF-8

报文编码格式改为UTF-8

作者: James2119 | 来源:发表于2017-08-15 22:09 被阅读215次

这两天项目需要将报文以xml格式推送给核心,过程中使用到RestTemplate,并且在自己拼接xml时使用了StringBuffer;


一、StringBuffer的.toString()

StringBuffer的.toString()是不会生成UTF-8格式的String的。
new String(sb.toString().getByte("你当前的编码方式"),"UTF-8");
这种方式我没有测试过,因为我无法确定当前的编码方式。
所以我选择的是转换为byte[] bytes
String str = new String(bytes, "UTF-8");

参考地址:http://blog.csdn.net/mengyan4632/article/details/6442548

二、RestTemplate

在发送的时候,使用了RestTemplate的postForObject(),
而RestTemplate会使用StringHttpMessageConverter,其默认编码集是ISO8859-1;
此时我选择设置Http请求头:

  HttpHeaders headers = new HttpHeaders();
  MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded; charset=UTF-8");
  headers.setContentType(type);
  HttpEntity<String> requestEntity = new HttpEntity<String>(PostStrUtils.getPostStrFromMap(paramMap),headers);  
  String msg = restTemplate.postForObject(url, requestEntity, String.class);

还有方法是在xml配置文件中配置restTempalate的Bean的StringHttpMessageConverter编码;
这里由于项目原因我没法在xml配置文件中直接修改。
我使用的方法不是单例模式的,修改xml配置文件是单例模式的。

tips:另外String字符串中如果有双引号,比如xml头:
String str = new String("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
这里必须对每个双引号使用转义字符\

相关文章

网友评论

      本文标题:报文编码格式改为UTF-8

      本文链接:https://www.haomeiwen.com/subject/aozvrxtx.html