首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URLConnection字符编码

URLConnection字符编码
EN

Stack Overflow用户
提问于 2012-03-03 19:43:22
回答 2查看 26.1K关注 0票数 4

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

代码语言:javascript
复制
{
  "also_known_as": [
    "Сильвестр Сталлоне"
  ],

  "birthday": "1946-07-06",
  "deathday": "",
}

通过HTTP。

我有以下代码:

代码语言:javascript
复制
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());

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

代码语言:javascript
复制
{
  "also_known_as": [
    "СильвеÑ?тр Сталлоне"
  ],

  "birthday": "1946-07-06",
  "deathday": "",
}

我也尝试过:

代码语言:javascript
复制
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));//BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "ISO-8859-1"));

但没有运气。

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

任何信息都会对我很有帮助。

致以问候。

使用Apache IOUtils,我尝试过这样做:

代码语言:javascript
复制
StringWriter writer = new StringWriter();
IOUtils.copy(connection.getInputStream(), writer, "UTF-8");

但它正在eclipse控制台中打印相同的结果。

使用Apache HttpClient:

代码语言:javascript
复制
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());

同样的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-03 23:01:47

只需将我的评论弹出一个答案,这就是原因所在:控制台的字符集是Cp1252,所以输出是正确的,但显示不正确。

票数 5
EN

Stack Overflow用户

发布于 2012-03-03 20:19:45

这样做:

代码语言:javascript
复制
new InputStreamReader(connection.getInputStream(), new Charset("UTF-8"))

例如,指定该字符集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9549249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档