gpt4 book ai didi

servlets - request.getQueryString() 似乎需要一些编码

转载 作者:行者123 更新时间:2023-12-03 09:14:55 24 4
gpt4 key购买 nike

我对 UTF-8 有一些问题。我的客户端(在 GWT 中实现)向我的 servlet 发出请求,在 URL 中包含一些参数,如下所示:

http://localhost:8080/servlet?param=value

当我在 servlet 中检索 URL 时,我对 UTF-8 字符有一些问题。
我使用这个代码:
protected void service(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

String reqUrl = request.getRequestURL().toString();
String queryString = request.getQueryString();
System.out.println("Request: "+reqUrl + "?" + queryString);
...

所以,如果我调用这个网址:
http://localhost:8080/servlet?param=così

结果是这样的:
Request: http://localhost:8080/servlet?param=cos%C3%AC

我该怎么做才能正确设置字符编码?

最佳答案

我以前遇到过同样的问题。不确定您使用的是什么 Java servlet 容器,但至少在 Tomcat 5.x(不确定 6.x)中是 request.setCharacterEncoding()方法实际上对 GET 参数没有影响。到您的 servlet 运行时,Tomcat 已经解码了 GET 参数,因此 setCharacterEncoding不会做任何事情。

解决这个问题的两种方法:

  • 将连接器的 URIEncoding 设置更改为 UTF-8。见 http://tomcat.apache.org/tomcat-5.5-doc/config/http.html .
  • 正如 BalusC 建议的那样,您自己解码查询字符串,然后自己手动将其解析(而不是使用 ServletRequest API)到参数映射中。

  • 希望这可以帮助!

    关于servlets - request.getQueryString() 似乎需要一些编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029401/

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