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

已设置request.setCharacterEncoding("UTF-8")仍无法获取带重音字符参数的解决办法

解决Request获取带重音符号参数的问题

首先要明确请求方式是POST还是GET,两种场景的处理逻辑不同:

POST 请求处理

  • request.setCharacterEncoding("UTF-8") 必须在第一次获取任何参数之前调用,否则不会生效。如果调用时机正确但仍失败,检查:
    • 前端表单是否设置了 accept-charset="UTF-8",确保表单提交时的编码为UTF-8;
    • 项目框架是否有自动编码配置,比如Spring MVC的过滤器,需确保框架编码也统一为UTF-8。

GET 请求处理

request.setCharacterEncoding("UTF-8") 对GET请求无效,因为GET参数通过URL传递,编码由服务器的URI编码配置决定:

  • 若使用Tomcat服务器,修改 conf/server.xml 中的Connector节点,添加 URIEncoding="UTF-8" 属性:
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"/>
    
  • 若无法修改服务器配置,可手动对参数转码:
    String rawParam = request.getParameter("targetParam");
    String decodedParam = new String(rawParam.getBytes("ISO-8859-1"), "UTF-8");
    
    注:大部分容器默认用ISO-8859-1编码URL参数,若你的容器默认编码不同,需替换对应编码值。

通用排查点

  • 确认AJAX请求是否设置了 contentType: "application/x-www-form-urlencoded; charset=UTF-8";
  • 检查整个请求链路的编码一致性,从前端传参、服务器接收,到后续业务处理,全部统一使用UTF-8编码。

内容的提问来源于stack exchange,提问作者Ngô Phúc Trường

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:25:02