java - 指定 URLConnection 响应的文档编码

标签 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);

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

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

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

最佳答案

我自己找到了答案。

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

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

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

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

关于java - 指定 URLConnection 响应的文档编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059186/

相关文章:

java - CORS 请求错误 Tomcat 7 & Java Servlet

java - 如何通过 URL 连接发送 cookie

android - 如何在 android 打开 URL 连接中发送 Json 数组作为 post 参数

Java代码无法删除文件

java - 如何使用不在接口(interface)接口(interface)中的方法 i = new class();

java - "Maven in 5 Minutes"教程中的原型(prototype)插件错误

java - 将 mp3 导入 android eclipse 失败

android - 为 Android 中的 URL 列表请求文件大小和 MIME 类型

java - URLConnection getInputStream 阻塞线程