1
        URL url = new URL("http://google.com");
        URLConnection connection = url.openConnection();

        connection.connect();

        System.out.println("conncetion successful.");

        String contentType = connection.getContentType();
        System.out.println(contentType);

contentType 是“文本/html;字符集=EUC-KR”。(可能在其他语言环境中有所不同)并且文档编码与 contentType 之一相同。

但是,当我使用网络浏览器(IE、Firefox、Opera 等)访问相同的 URL(“ http://google.com ”)时,它说这是一个 UTF-8 编码的页面。(并且文档编码实际上是 UTF-8。)

我想获得 UTF-8 编码的 URLConnection,但似乎没有 API。我怎样才能做到这一点?

4

1 回答 1

1

我自己找到了答案。

Google 不会检查请求中的 Accept-Charset 属性,而是检查 User-Agent。如果指定了 User-Agent 并且众所周知(Opera、Mozila 等),Google 会以 UTF-8 格式发送响应。否则响应将是 EUC-KR(可能在其他环境中有所不同)。

所以,这是一个答案:在连接之前添加这一行。

connection.setRequestProperty("User-Agent", "Opera/9.80");

您可能更喜欢其他代理。(mozila等...)

于 2013-02-28T06:03:17.257 回答