0

我正在使用以下代码从 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 转发的请求配置任何内容?

4

1 回答 1

2

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

创建一个使用默认字符集的 InputStreamReader 。

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

于 2013-09-06T11:19:58.903 回答