繁体   English   中英

用Java打印非英语字符串

[英]print non-English String in Java

当我打印电影名称“Yôjinbô”( http://www.imdb.com/title/tt0055630/?ref_=chttp_tt_107 )时,其中包含一些非英语字符,在其中似乎是“ YôjinbÔ eclipse中的输出窗口。

我在eclipse或项目属性中找不到任何编码设置。 如何正确打印电影名称?

--------------------更新-------------------

我找到了问题所在。 以下是从omdbapi.com获取电影信息的代码,当我在reader.readLine()之后打印行时,名称错误。

writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("movies/movie_" + i + ".txt"), "utf-8"));
sb = new StringBuilder();
ret = new StringBuilder();
title = URLEncoder.encode(movieNames[i], "UTF-8");
sb.append("http://www.omdbapi.com/?");
sb.append("t=").append(title).append("&");
sb.append("y=").append(year).append("&");
sb.append("plot=").append(plot).append("&");
sb.append("r=").append(r);
CloseableHttpClient client = HttpClients.createDefault();
String url = sb.toString();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

String line = reader.readLine(); // <-------- wrong here
while (line != null) {
    System.out.println(line);
    writer.write(line);
    line = reader.readLine();
}

但是,当我将网址( http://www.omdbapi.com/?t=Y%C3%B4jinb%C3%B4&y=&plot=short&r=json )直接粘贴到chrome中时,响应是正确的。

- - - - - - - - - - 问题解决了 - - - - - - - - - -

我唯一需要做的就是在创建InputStreamReader时设置“ UTF8”,如下所示

BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF8"));

感谢你的帮助。

-------------------更多更新-------------------

事实证明,FileReader和FileWriter隐式使用系统的默认字符编码,这可能会引起问题,应将其替换。

// br = new BufferedReader(new FileReader(filename)); // <---- cause encoding problem here
br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"));

http://www.javapractices.com/topic/TopicAction.do?Id=42

也许可以帮助您。

网路上还有许多其他有关您的问题的文章。 搜索它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM