这在特定情况下相对简单,但在一般情况下相当棘手。
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://stackoverflow.com/");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.getContentMimeType(entity));
System.out.println(EntityUtils.getContentCharSet(entity));
答案取决于Content-Type
HTTP 响应标头。
此标头包含有关有效负载的信息,并且可能定义文本数据的编码。即使您假设text types,您也可能需要检查内容本身以确定正确的字符编码。例如,请参阅HTML 4 规范以了解有关如何针对该特定格式执行此操作的详细信息。
一旦知道编码,就可以使用InputStreamReader来解码数据。
这个答案取决于服务器做正确的事情——如果你想处理响应头与文档不匹配的情况,或者文档声明与使用的编码不匹配,那又是一锅鱼。