指定URLConnection响应的文档编码

时间:2013-02-25 02:25:36

标签: java urlconnection

        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是“text / html; charset = EUC-KR”。 (可能在其他语言环境中有所不同),文档包含与contentType之一相同。

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

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

1 个答案:

答案 0 :(得分:1)

我自己找到了答案。

Google未在请求中检查Accept-Charset属性,但会检查User-Agent。 如果User-Agent被指定并且众所周知(Opera,Mozila等......),Google会以UTF-8发送回复。 否则回复将是EUC-KR(可能在其他环境中有所不同)。

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

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

您可能更喜欢其他代理商。 (莫兹拉等......)