Spring怎么又 bug 了,响应结果居然乱码了?

Posted JavaEdge.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring怎么又 bug 了,响应结果居然乱码了?相关的知识,希望对你有一定的参考价值。


换个方式访问该接口,示例如下:

期待"JavaEdge:dev 666",但是运行上述代码后,你会发现结果却是下面这样:

why?

解析

这就要求精通 URL 的处理:

UriComponentsBuilder#toUriString:

URL Encode


调用栈如下:


至此,都还是正常的,但是当我们把 URL 转化成 String,再通过如下语句发送请求时:

会发现,它会再进行一次编码:

至此,你应该理解为啥出问题了:依案例代码会执行 2 次编码(Encode),所以最终获取意外惊喜!
2 次编码后:

修正

避免多次转化而发生多次编码:

以上是关于Spring怎么又 bug 了,响应结果居然乱码了?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决响应结果中文乱码问题

如何解决响应结果中文乱码问题

Apache的代码居然也有bug?

PHP-命令执行乱码的解决(Thinkphp)

PHP-命令执行乱码的解决(Thinkphp)

学会淡定