2014-12-10 5 views
0

Когда я печатаю название фильма «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

+1

«System.out.println (« Yôjinbô »);' работа? –

+0

Да. Ну, я проверяю шаги обработки строк. Он включает некоторые операции записи и чтения файлов, что может вызвать проблему кодирования. –

+1

Если вы предоставите немного источника, код может оказаться полезным. –

ответ

0

Может быть this или this может помочь вам.

В Интернете много других сообщений о вашей проблеме. Найдите его.

+0

Спасибо, я нашел решение. –

 Смежные вопросы

  • Нет связанных вопросов^_^