Когда я печатаю название фильма «Yôjinbô» (http://www.imdb.com/title/tt0055630/?ref_=chttp_tt_107), которое содержит некоторые неанглийские символы, оно выглядит «YÃÂ'jinbû в окне вывода в затмении.print non-English String in Java
Я не могу найти какие-либо настройки кодирования в 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();
}
Но когда я вставить URL (http://www.omdbapi.com/?t=Y%C3%B4jinb%C3%B4&y=&plot=short&r=json) непосредственно в хроме, ответ является правильным.
------------------- проблема решена -------------------
только что мне нужно сделать, это установить «UTF8» при создании InputStreamReader следующего
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
«System.out.println (« Yôjinbô »);' работа? –
Да. Ну, я проверяю шаги обработки строк. Он включает некоторые операции записи и чтения файлов, что может вызвать проблему кодирования. –
Если вы предоставите немного источника, код может оказаться полезным. –