【问题标题】:how to retain utf-8 character encoding in tomcat with GET request如何使用 GET 请求在 tomcat 中保留 utf-8 字符编码
【发布时间】:2012-03-01 13:39:34
【问题描述】:

从我的 JSP 中,我发送一个 GET 请求,其中包含一个名为 jobDetails 的参数,其中包含一些中文字符 [使用 URLEncoder.encode() 编码]。现在在我的 servlet 的 doGET() 中,我需要将数据写入文件。当我这样做时

request.getParameter("jobDetails"); // this one retrieves wrong characters

中设置 URIEncoding="UTF-8"有一个解决方案
 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

Tomcat 的标签,但我们的架构师一心一意不改变现有的 Tomcat 设置。如BalusC's blog 中所述,我尝试设置过滤器以在 doFilter() 中为 request 设置 characterEncoding()。但这仅适用于 POST 请求。除了更改 Tomcat 设置之外,还有其他解决方案吗?我正在使用 Tomcat 6 和 jdk 1.6。

【问题讨论】:

    标签: java jakarta-ee tomcat utf-8


    【解决方案1】:

    抱歉,您必须告诉您的架构师,有时,更改配置是唯一的选择,而这就是其中之一。要在 Tomcat 的 URL 参数中支持 UTF-8 字符,您需要将该设置添加到连接器。

    【讨论】:

      【解决方案2】:

      如果与架构师争论听起来不好玩(而且事实并非如此),URLEncodedUtils 的解析应该可以满足您的需求。

      public static void main( String[] args ) {
          List<NameValuePair> foo = null;
          List<String> encodings = Arrays.asList( "ISO-8859-1", "UTF-8" );
      
          for ( String e : encodings ) {
              System.out.println( String.format( "Interpreting as %s", e ) );
              foo = new ArrayList<NameValuePair>();
              URLEncodedUtils.parse( foo, new Scanner( "jobdetails=%C2%A2" ), e );
      
              for ( NameValuePair i : foo ) {
                  System.out.println( String.format( "%s had value %s", i.getName(), i.getValue() ) );
              }
          }
      }
      

      您仍然需要获取原始请求字符串以传递给此方法,但这应该不会太难。由于它是 URL 编码的,因此您无需担心编码,因为所有非 ASCII 字符都会被转义。

      【讨论】:

        【解决方案3】:

        我以某种方式找到了一种方法...我从 org.springframework.web-3.0.0.RELEASE.jar 导入了 org.springframework.web.bind.ServletRequestUtils 类,并使用以下内容来解析参数“jobDetails” “请求”对象:

        String jobDetails = new String((ServletRequestUtils.getStringParameter(request, "jobDetails")).getBytes("ISO-8859-1"), "UTF-8");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-13
          • 2012-08-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多