2012-05-25 4 views
2

Я попытался следующие:Как печатать «rājshāhi» на консоли вывода Eclipse?

System.out.println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out), true).println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"), true).println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out, "ISO-8859-1"), true).println("rājshāhi"); 

Который дает следующий результат:

r?jsh?hi 
r?jsh?hi 
rÄ?jshÄ?hi 
r?jsh?hi 

Итак, что я делаю неправильно?

Спасибо.

P.S.

Я использую Eclipse Indigo в Windows 7. Выходные данные выводятся на выходную консоль Eclipse.

ответ

3

Java-файл должен быть закодирован правильно. Посмотрите в свойствах этого файла и установить кодировку правильно:

enter image description here

+0

это правильный ответ. подтверждено! – guness

+0

Действительно, это работает. – mark

+0

Выход консоли использует кодировку, определенную для файла. Таким образом, даже если ваша программа верна, вывод консоли может отображать искаженные символы. Не используйте консольный выход. Попробуйте записать его в файл с использованием правильной кодировки и проверить результат в любом текстовом редакторе. Надеюсь это поможет – Ravi

1

На самом деле, копируя свой код и запустить его на своем компьютере дал мне следующий вывод:

rājshāhi 
rājshāhi 
rājshāhi 
r?jsh?hi 

Похоже, все линии работают, кроме последнего. Получите свой набор символов по умолчанию для системы (см. this answer). Шахта - UTF-8. Посмотрите, меняется ли изменение набора символов по умолчанию.

либо из следующих строк будет получить по умолчанию набор символов:

System.out.println(System.getProperty("file.encoding")); 
System.out.println(Charset.defaultCharset()); 

Чтобы изменить кодировку по умолчанию, см this answer.

+0

Можете ли вы показать мне конкретные команды java для выполнения? – mark

+0

@mark см. Мои правки. – kentcdodds

1

Что вы должны сделать, даже просто System.out.println, если у вас есть последняя версия затмения.

Посмотрите на следующее:

  • версия затмения вы используете
  • ли файл правильно закодированное. См. Ответ от Матфея. Я полагаю, что это будет так, потому что в противном случае затмение не позволит вам сохранить файл (предупредит «неподдерживаемые символы»)
  • Шрифт для консоли (Windows -> Preferences -> Fonts -> Default Console Font)
  • При сохранении текста в файл ли вы получаете символы правильно

enter image description here

+0

Я уверен, что это связано с кодировкой по умолчанию, которую использует JVM, является системным значением по умолчанию. Таким образом, тот факт, что он отлично работал на вашем, вероятно, не имеет прямого отношения к тому, почему он не работает с OP. (См. [Этот ответ] (http://stackoverflow.com/a/623036/971592)) – kentcdodds

+0

@kentcdodds Это может быть не просто кодировка по умолчанию JVM (но определенно возможность). У меня были ситуации, когда класс java не был сохранен в правильно закодированном файле. Вот почему я попросил OP попробовать работать с файлом (а не печатать на консоли) – Nivas

0

Убедитесь, что при создании вашего класса Присвоить файла Кодировка текста Значение UTF-8. После того, как класс будет создан с любым другим кодированием текстового файла, вы не сможете изменить стиль кодирования, хотя затмение позволит вам не задумываться. Итак, создайте новый класс с кодировкой TextFile UTF 8. Он будет работать определенно.

EDIT: В вашем случае если вы пытаетесь Ассинг Text кодировку файла программно это не делает никакого влияния он берет контейнер унаследованную кодировку (CP1252)

0

Использование Последняя версия Eclipse, помогла мне для того чтобы достигнуть UTF-8 кодирование на консоли Я использовал Luna-версию Eclipse и установил Properties-> Info-> Others-> UTF-8