代码之家  ›  专栏  ›  技术社区  ›  Aravindhan

Tomcat字符编码

  •  0
  • Aravindhan  · 技术社区  · 11 年前

    我正在使用以下代码从API获取响应,

             String urlRequest = "<actual URL>";
    
            //Setting the url to the URL object
            URL url = new URL(urlRequest);
    
            //opening connection that to get the response
            URLConnection urc = url.openConnection();
    
            //reading the response in the input stream
            BufferedReader brdr = new BufferedReader(new 
                                   InputStreamReader(urc.getInputStream()));
            StringBuffer resBuf = new StringBuffer();
            String tempStrRes = new String();
            System.out.println(tempStrRes);
    

    对于其他语言字符,我从tomcat得到了正确的编码响应,但当我使用其他tomcat时,编码处理不正确,其他语言字符显示为???????。

    我检查了两台tomcat机器的server.xml文件,发现它们是相同的。

    我可以通过如下修改代码来获得正确的响应,

       BufferedReader brdr = new BufferedReader(new 
                                   InputStreamReader(urc.getInputStream(),"utf-8"));
    

    但我想知道问题的原因(内容在一个tomcat中编码正确,但在另一个tomcat中编码不正确),是否需要为tomcat转发的请求配置任何内容?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Janick Bernet    11 年前

    检查文档 InputStreamReader ,它们非常清楚:

    创建一个InputStreamReader,该阅读器使用 默认字符集 .

    因此,除非您明确指定一个字符集,否则它将使用系统字符集,这在两台机器上似乎有所不同。所以,总是将字符集指定为经验法则,你就可以了,正如你已经发现的那样。