URLConnection字符编码

Tap*_*ose 4 java encoding httpurlconnection

我正在尝试读取JSON字符串:

{
  "also_known_as": [
    "????????? ????????"
  ],

  "birthday": "1946-07-06",
  "deathday": "",
}
Run Code Online (Sandbox Code Playgroud)

通过HTTP.

我有以下代码:

URL url = new URL("url");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");//connection.setRequestProperty("Accept-Charset", "ISO-8859-1");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line = "";
StringWriter writer = new StringWriter();
while((line=reader.readLine())!=null){
    writer.write(line);
}
reader.close();
writer.close();     
connection.disconnect();
System.out.println(writer.toString());
Run Code Online (Sandbox Code Playgroud)

但是它在控制台中打印字符串:

{
  "also_known_as": [
    "СильвеÑ?тр Сталлоне"
  ],

  "birthday": "1946-07-06",
  "deathday": "",
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));//BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud)

但没有运气.

我的问题是如何设置URLConnection的字符编码?

任何信息对我都非常有帮助.

问候.


使用Apache IOUtils我试过这个:

StringWriter writer = new StringWriter();
IOUtils.copy(connection.getInputStream(), writer, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

但它在eclipse的控制台上打印相同的结果.


使用Apache HttpClient:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet("http://api.themoviedb.org/3/person/16483?api_key=23e89da030a0ee8b25aaed20950a0c25");
getRequest.addHeader("accept", "application/json");
HttpResponse response = httpClient.execute(getRequest);
StringWriter writer = new StringWriter();
IOUtils.copy(response.getEntity().getContent(), writer, "UTF-8");
System.out.println(writer.toString());
Run Code Online (Sandbox Code Playgroud)

同样的结果.

Sea*_*wen 5

只是将我的评论弹出一个答案,结果证明是原因:控制台的字符集是Cp1252,所以输出正确但显示不正确.