Специальные символы не отображены на TTY

У меня есть консольное приложение, которое отображает специальные символы как

☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵

Неважно, где - шпаклевка (рисунок строки UTF8+Use Unicode, но я предполагаю, что это не клиентская проблема), локальная консоль, SecureCRT - я не вижу их. Вместо этого просто квадраты. Вот мои переменные ENV оболочки

LANG=en_US.UTF-8
TERM=xterm

Какая-либо идея, как сделать терминал для показа тех символов правильно?

Обновление

Глиф я интересуюсь

python -c 'print u"\u22c5 \u22c5\u22c5 \u201d \u2019 \u266f \u2622 \u260d \u2318 \u2730 " \
    u"\u28ff \u26a1 \u262f \u2691 \u21ba \u2934 \u2935 \u2206 \u231a \u2240\u2207 \u2707 " \
    u"\u26a0\xa0\u25d4 \u26a1\xa0\u21af \xbf \u2a02 \u2716 \u21e3 \u21e1  \u2801 \u2809 " \
    u"\u280b \u281b \u281f \u283f \u287f \u28ff \u2639 \u2780 \u2781 \u2782 \u2783 \u2784 " \
    u"\u2785 \u2786 \u2787 \u2788 \u2789 \u25b9\xa0\u254d \u25aa \u26af \u2692 \u25cc " \
    u"\u21c5 \u21a1 \u219f \u229b \u267a ".encode("utf8")'

Снимок экрана со шрифтом Ubuntu

enter image description here

Снимок экрана со шрифтом DejaVu

enter image description here

1
задан 28 February 2012 в 04:40

3 ответа

Я просто скопировал символы из вашего примера и повторил их в окне терминала:

UTF-8 Characters test in GNOME Terminal

Я думаю, что TTY не имеют такой большой поддержки символов, поэтому может быть проблема со шрифтом.

0
ответ дан 28 February 2012 в 04:40

Я поддерживаю @lgarzo. Вы можете попробовать более крупные шрифты, особенно восточные:

$ aptitude install ttf-wqy-microhei
0
ответ дан 28 February 2012 в 04:40

... putty (UTF8 + Использовать Unicode ...

Вместо использования шестнадцатеричной escape-последовательности может быть проще использовать фактические символы для проверки резидентных шрифтов ( если символ отсутствует, то это оксюморон, поскольку его невозможно будет выбрать! - это означает, что исходный компьютер должен создать файл с нужными символами в нем, а затем отобразить этот файл на целевом компьютере).

[ 1133] Запрограммированная генерация глифа также может быть выполнена с использованием пар символов / UTF уникодов путем извлечения UTF-8 или UTF-16:

    python -c 'print "⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚"'
    ⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚

    python -c 'print "⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚".decode("unicode_escape")'
    â Ⱐ⣿ ⡠⯠â ⺠⤴ ⤵ â â

]
    python -c 'print "⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚".decode("unicode_escape")
                                                   .encode("unicode_escape")'
    \xe2\x8c\x98 \xe2\x9c\xb0 \xe2\xa3\xbf \xe2\x9a\xa1 \xe2\x98\xaf \xe2\x9a\x91
    \xe2\x86\xba \xe2\xa4\xb4 \xe2\xa4\xb5 \xe2\x88\x86 \xe2\x8c\x9a

    python -c 'print "⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚".decode("unicode_escape")
                                                   .encode("unicode_escape")
                                                       .decode("string_escape")'
    ⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚

    python
    Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> u"⌘ ✰ ⣿ ⚡ ☯ ⚑ ↺ ⤴ ⤵ ∆ ⌚"
    u'\u2318 \u2730 \u28ff \u26a1 \u262f \u2691 \u21ba \u2934 \u2935 \u2206 \u231a'

Глифы Unicode могут отображаться с использованием UTF-8 или UTF-16
, таким образом Unicode U+2318 ] или UTF-16: 0x2318 или - это UTF-8: 0xE2 0x8C 0x98

Сведения о шрифте для персонажа можно найти, буквально ища его в character map. Он запускается как утилита значков или активируется с помощью gnome-character-map. ] или gucharmap команда терминала. Нажмите и удерживайте правую кнопку мыши над символом, чтобы указать шрифт проживания. Кроме того, используйте Show only glyphs in this font в меню View, а затем прокрутите список шрифтов с помощью клавиши со стрелкой, чтобы быстро найти шрифт символа с другими резидентными символами.

enter image description here

упс
предыдущий ответ ниже повторяет очевидное - смотрел на ответы, а не на вопрос

<час >
ubuntu@ubuntu:~$ echo '☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵'
☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵

и

python -c 'print u"\xbf  \n FreeSerif\n"  \
  u"\u2019 \u201d \u219f \u21a1 \u21af \u21ba \u21c5 \u21e1 \u21e3 \n" \
  u"\u2206 \u2207 \u2240 \u229b \u22c5 \u22c5\u22c5 \u2318 \u231a \n"  \
  u"\u25aa \u25b9 \u25cc \u25d4 \n"   \
  u"\u260d \u2622 \u262f \u2639 \u266f \u267a \u2691 \u2692 \u26a0 \u26a1 \u26af \n" \
  u"\u2780 \u2781 \u2782 \u2783 \u2784 \u2785 \u2786 \u2787 \u2788 \u2789 \n"  \
  u"\u2707 \u2716 \u2730 \u2a02 \n DejaVu\n"   \
  u"\u2801 \u2809 \u280b \u281b \u281f \u283f \u287f \u28ff \n"  \
  u"\u2934 \u2935 \u254d   \n".encode("utf8")'

печатает

¿  
 FreeSerif
’ ” ↟ ↡ ↯ ↺ ⇅ ⇡ ⇣ 
∆ ∇ ≀ ⊛ ⋅ ⋅⋅ ⌘ ⌚ 
▪ ▹ ◌ ◔ 
☍ ☢ ☯ ☹ ♯ ♺ ⚑ ⚒ ⚠ ⚡ ⚯ 
✇ ✖ ✰ ⨂ 
➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉ 
 DejaVu
⠁ ⠉ ⠋ ⠛ ⠟ ⠿ ⡿ ⣿ 
⤴ ⤵ ╍   

с использованием gnome-terminal

ubuntu@ubuntu:~$ echo \$TERM = $TERM \  \$LANG = $LANG
$TERM = xterm   $LANG = en_US.UTF-8

и

ubuntu@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:    12.04
Codename:   precise
ubuntu@ubuntu:~$ 

примечание: неправильные символы EOT и ENQ
ref: Как можно исправить символы Unicode u + 2404 ␄ EOT и u + 2405 ␅ ENQ?

python -c 'print u"This is ^D EOT (NB!! no ;) \u2404 and ENQ ^E \u2405 ".encode("utf8")'
This is ^D EOT (NB!! no ;) ␄ and ENQ ^E ␅ 
0
ответ дан 28 February 2012 в 04:40

Другие вопросы по тегам:

Похожие вопросы: