You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Redirect为何编码空格却不编码非英文字符?求相关文档

Spring Redirect 编码问题解析

现象原因

Spring的redirect:重定向机制中,编码逻辑分两部分:

  • 路径部分:非英文字符默认不会自动编码,这是因为Servlet容器(如Tomcat)的URI编码配置默认为ASCII,未开启非ASCII字符的自动编码。
  • 查询参数部分:空格会被自动编码为%20,这符合URL编码规范,但非ASCII字符若未通过工具类处理,同样不会自动编码。

解决方案

  1. 使用UriComponentsBuilder构建URL:这是Spring推荐的方式,会自动对路径、查询参数中的所有特殊字符(包括非ASCII字符、空格)进行标准URL编码:
String redirectUrl = UriComponentsBuilder.fromPath("/user/张三")
        .queryParam("nickname", "小 明")
        .build()
        .toUriString();
return "redirect:" + redirectUrl;
  1. 配置Servlet容器编码:以Tomcat为例,在server.xml的Connector节点添加URIEncoding="UTF-8"和useBodyEncodingForURI="true",确保容器对路径中的非ASCII字符进行编码解析。
  2. 使用RedirectView时开启编码:若使用RedirectView类,可调用setUrlEncode(true)方法启用自动编码(注意适配Spring版本)。

参考文档

可查阅Spring Framework官方文档中「Spring MVC 重定向与URL构建」相关章节,了解更详细的编码规则与配置方式。

内容的提问来源于stack exchange,提问作者hoondal2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:45:42