RestTemplate发送get请求中文参数里面特殊字符编码解码问题

问题:get请求附带一个中文参数:“我是+什么”
springboot自带的@RequestParam接收参数将+号去掉了,实际接收到的是"我是 什么"
参数编码转换使用的是URLDecoder规则解码
RestTemplate发送get请求中文参数里面特殊字符编码解码问题_第1张图片

目前springboot配置是默认的,没有修改。所以只能将RestTemplate的默认参数编码规则EncodingMode.URI_COMPONENT更改为EncodingMode.VALUES_ONLY,方法如下

RestTemplate restTemplate = new RestTemplate();
DefaultUriBuilderFactory uriFactory = new DefaultUriBuilderFactory();
uriFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
restTemplate.setUriTemplateHandler(uriFactory);
默认规则源码:
默认
EncodingMode中还有其他类型,针对于参数编码解码问题都可以修改这里的参数做调整
RestTemplate发送get请求中文参数里面特殊字符编码解码问题_第2张图片

你可能感兴趣的:(Springboot)