Подтвердить что ты не робот

Я не могу понять, почему DrJava не выводит символы Unicode

Я хотел бы извиниться за свою невероятную новизну в отношении Java и программирования в целом. Но я везде искал ответ на этот вопрос, и я просто не могу найти его.

Поэтому я просто пытаюсь запустить следующее:

public class WriteSquares2
{
  public static void main(String[] args)
  {
    for (int i=1; i<=10; i++)
    {
      System.out.println(i + " \u2261 " + (i % 7) + " modulo 7");
    }
  }
}

Символ Unicode\u2261 является знаком конгруэнтности (≡). DrJava показывает в качестве вывода следующее:

1 ? 1 modulo 7
2 ? 2 modulo 7
3 ? 3 modulo 7
4 ? 4 modulo 7
5 ? 5 modulo 7
6 ? 6 modulo 7
7 ? 0 modulo 7
8 ? 1 modulo 7
9 ? 2 modulo 7
10 ? 3 modulo 7

Что самое странное в том, что когда я просто набираю

'\u2261'

в поле "Взаимодействия", я получаю символ эквивалентности в одинарных кавычках:

'≡'

Я пробовал просто поместить '\ u2261' в код вместо "\ u2261", но потом я получаю такие вещи:

8803 modulo 7
8805 modulo 7
8807 modulo 7

Я также попробовал просто вставить символ Юникода в код, но это только что дало сообщение об ошибке. Может ли кто-нибудь понять, что происходит или что я делаю неправильно? Ваша помощь очень ценится.

[Я должен добавить, что это не домашнее задание или что-то еще, так как наша книга едва упоминает Unicode - просто пытается понять это... и когда я начал, я не думал, что это будет сложно ]

EDIT: я использую Mac OS 10.7.5, а Dr Java говорит, что его сборка "drjava-20120818-r5686".

РЕДАКТИРОВАТЬ № 2: вот скриншот с использованием Monospaced 12 в качестве основного шрифта. Он по-прежнему отображается как вопросительные знаки, хотя я могу заставить консоль вернуть мне символ, если я ввожу его напрямую, но с одинарными кавычками.

enter image description here

4b9b3361

Ответ 1

Проблема связана с шрифтом, который вы используете, это не проблема с вашим кодом. См. Настройки DrJava в разделе Edit > Preferences > Display Options > Fonts > Main Font.

DrJava использует шрифт по умолчанию (Monospaced 12) в Linux: DrJava on Linux with "Main Font" set to default (Monospaced 12)

DrJava с использованием другого шрифта (PT Sans 12) в Linux: DrJava on Linux with "Main Font" set to "PT Sans 12"

Оба скриншота взяты из одного экземпляра DrJava; Мне даже не пришлось закрывать его. Обратите внимание, что на панели "Взаимодействия" глиф правильный для моего моноширинного шрифта и является общим заполнителем для PT Sans. То же самое происходит на вкладке Консоль (не показана).

Ответ 2

Я немного исследовал, и я нашел решение, которое было найдено ранее из другого вопроса здесь

Итак, в этом случае это может быть нечто похожее. Не совсем ваш код, но способ, которым DrJava обрабатывает unicode в зависимости от вашей системы.

" Кодировка символов зависит от системы. В зависимости от вашего поля он может печатать 16 бит кодировки UTF-16 (что составляет 9794), высокие 8 бит (это должно быть 38) или, как в вашем случае, 8 разрядов (что равно 66).

9794 / 256 = 38
9794 % 256 = 66

"

Ответ 3

Вы изменили свое приглашение на вывод в формате unicode (примечание: Java default в англоязычном мире IS0-8859-1).