gpt4 book ai didi

Java servlet 的参数值未解码

转载 作者:行者123 更新时间:2023-11-30 04:46:49 25 4
gpt4 key购买 nike

我在 java servlet 的 getParameter() 方面遇到了一些问题,即使我在 server.xml 中正确设置了 Tomcat 的编码,它也不会解码参数。

 <Connector port.. URIEncoding="UTF-8"/>

如果我解码原始查询,我会得到解码后的查询,但 getParamter 不会自行解码!

 protected void service(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
System.out.println("CharacterEncoding: "+ request.getCharacterEncoding());
System.out.println("Query String: "+ URLDecoder.decode(request.getQueryString(), "UTF-8");
System.out.println("Query param name: "+request.getParameter("name"));
...

我得到的结果如下:

字符编码:UTF-8

查询字符串:name=日本语一番ぜソFOX_&'">•«Ç€Ö™»_αß_i???I_Администратор_cœur d´Ouchy_𠀀𠄂𪛖_ Seer 巴

查询参数名称: æ¥æ‐èªä¸çªã¸_&'">â⫤àââ»_αà_iä°ä±I_ÐдÐ⁄иниÑÑÑаÑЪÑ_cÅur dâ´ Ouchy_ð ð ðª_Ø1رءÙ

你可以清楚地看到查询和名称的值不一样!在我的 jsp 页面中,我使用 <%@page contentType="text/html; charset=UTF-8"%>

最佳答案

我知道这涉及 GET 请求。设置<Connector URIEncoding="UTF-8">应该这样做。它不起作用只能意味着您从 Eclipse 之类的 IDE 内部运行 Tomcat,并且当您在 /conf/server.xml 中编辑 Tomcat 自己的配置时,IDE 未配置为接管 Tomcat 自己的配置。 .

不清楚您使用的是哪个 IDE,但如果是 Eclipse,您需要编辑 server.xml文件位于工作区的 Servers 项目中,而不是 Tomcat 自己的 /conf/server.xml文件

enter image description here

或者通过双击服务器 View 中的Tomcat服务器条目并相应地更改服务器位置部分,将Eclipse配置为控制Tomcat的安装。

enter image description here

返回您的调查/修复尝试:request.getCharacterEncoding()不用于解码 GET 查询字符串(因为这超出了 Servlet API 的控制范围),它仅用于解码 POST 请求主体。 <%@page pageEncoding="UTF-8"%>只会设置响应的字符编码以及后续表单提交。

另请参阅

关于Java servlet 的参数值未解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10790206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com