Отображение символа костюма в терминале с Java - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть вопрос относительно отображения символа костюма (ASCII) (сердце, алмаз, лопата и булавка) в окне терминала при запуске программы на Java.В настоящее время я использую JCreator V3 LE.JDK, который я использую, - 1.8.0_172.

В прошлом я использовал синтаксис:

Character.toString((char) 3)
Character.toString((char) 4)
Character.toString((char) 5)
Character.toString((char) 6)

Теперь он отображает поле с?в нем, как будто персонаж не может быть найден.Есть ли другой способ сделать это, или этот символ был удален из окна?

Спасибо.

1 Ответ

0 голосов
/ 29 ноября 2018

Как и при любой передаче текста, ваша Java-программа (писатель) и терминал (читатель) должны находиться на одной странице - то есть «кодовой странице» (кодировке символов).Вы сказали ASCII, но ASCII не поддерживает символы, которые вы хотите использовать.Вы, вероятно, думаете о CP437 из MS-DOS и Windows.(В MS-DOS не было кодовой страницы ASCII; для полноты из-за Windows у нее была одна поздняя версия. ASCII используется только в очень специализированных контекстах.)

Если вы хотите использовать транскодирование символов Javaвне уравнения вы можете записать байты в выходной поток.Тогда что бы они ни значили для терминала, он будет декодировать их в символы.

// for illustration purposes only; I would not invest in code like this.
System.out.flush();
System.out.write(0x03);
System.out.flush();

Чтобы увидеть их, терминал должен иметь шрифт, который включает в себя декодированный символ.Белая коробка или коробка с вопросительным знаком указывают, что шрифт не имеет.Знак вопроса или знак вопроса в черном ромбе указывают, что байты ничего не значат в кодировке символов терминала.

Чтобы проверить кодировку символов вашего терминала, перейдите на chcp (Windows) или locale (большинство других ОС).

Как указано в комментариях @VGR, GUI проще.Это потому, что они избегают концепции создания потока байтов текста в конкретной кодировке символов и просто используют средства оконной системы для рисования текста.(Это происходит за счет невозможности перенаправить вывод в другую программу или перенаправить его в файл, что является ключевой особенностью программ CUI.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...