Símbolos especiais não são exibidos no TTY

1

Eu tenho um aplicativo de console que exibe símbolos especiais como

☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵

Não importa onde - putty (UTF8 + Use o desenho de linha Unicode, mas eu acho que não é problema do cliente), console local, SecureCRT - não consigo vê-los. Em vez disso, apenas praças. Aqui estão minhas variáveis de env do shell

LANG=en_US.UTF-8
TERM=xterm

Alguma ideia de como fazer o terminal mostrar esses símbolos corretamente?

Atualizar

Glyph Estou interessado em

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")'

Captura de tela com a fonte do Ubuntu

Screenshot com a fonte DejaVu

    
por Pablo 24.02.2012 / 16:56

3 respostas

3

Eu apenas copiei os caracteres do seu exemplo e fiz eco deles em uma janela de terminal:

Eu acho que os TTYs não têm muito suporte a caracteres, então pode ser um problema de fonte.

    
por lgarzo 24.02.2012 / 17:49
0

Eu apoio @lgarzo. Você pode experimentar algumas fontes maiores , especialmente as orientais:

$ aptitude install ttf-wqy-microhei
    
por 象嘉道 24.02.2012 / 19:09
0
  

... putty (UTF8 + Usar Unicode ...

Em vez de usar uma seqüência de escape hexadecimal, talvez seja mais fácil usar os caracteres reais para testar fontes residentes (se um caractere estiver ausente, isso é um oxímoro, pois não será possível escolhê-lo!). deve criar um arquivo com os símbolos desejados e, em seguida, exibir esse arquivo com a máquina de destino).

A geração de glifos programada também pode ser feita usando emparelhamentos caractere / UTF de unicodes por extração de UTF-8 ou 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'

Os glifos Unicode podem ser renderizados usando UTF-8 ou UTF-16
assim Unicode U+2318 ou UTF-16: 0x2318 ou é UTF-8: 0xE2 0x8C 0x98

Detalhes da fonte para um personagem podem ser encontrados literalmente procurando por ele em character map . Ele é executado como um utilitário de ícone ou ativado com o comando gnome-character-map ou gucharmap terminal. Pressione e segure o botão direito do mouse sobre o caractere para identificar a fonte de residência. Além disso, use Show only glyphs in this font no menu View e role pela lista de fontes com uma tecla de seta para localizar rapidamente a fonte do caractere com outros caracteres residentes.

oops
resposta anterior abaixo reitera o óbvio - estava olhando para as respostas, em vez de questionar

ubuntu@ubuntu:~$ echo '☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵'
☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵

e

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")'

imprime

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

usando gnome-terminal

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

e

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:~$ 

nota: os símbolos EOT e ENQ estão errados
ref: Como pode unicode símbolos u + 2404 ␄ EOT e u + 2405 ␅ ENQ ser corrigido?

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 ␅ 
    
por george rowell 08.03.2013 / 19:06