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/