Spring Rest 模板使用 % 将值注入参数

Spring Rest Template Injects Value into Parameter with %

有人可以向我解释一下以下代码中发生了什么吗?

如果我运行:

RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("header1", "data");
headers.add("header2", "data");
HttpEntity<String> entity = new HttpEntity<>("body", headers);

ResponseEntity<JSONObject> response = 
rest.exchange("https://example.com/../{username}/{path}", HttpMethod.GET, entity, JSONObject.class, "user%123", "path");

Spring 告诉我使用的 URL 是 https://example.com/../username/path 其中用户名 = user%25123 即使我设置了用户名 = user%123.

我认为这不是 Spring 问题,而是 URL 编码问题,但谁能告诉我这额外的 25 是从哪里来的?

%25 是一个 URL-encoded 百分号,所以 user%123 编码为 user%25123

更多信息:https://www.w3schools.com/tags/ref_urlencode.ASP