TTY 上不显示特殊符号

TTY 上不显示特殊符号

我有一个控制台应用程序显示特殊符号,例如

☢ ☍ ⌘ ✰ ⣿ ⚡ ☯ ⚑  ↺  ⤴  ⤵

无论在哪里 - putty(UTF8+使用 Unicode 线条画,但我猜这不是客户端问题)、本地控制台、SecureCRT - 我都看不到它们。而只是方块。这是我的 shell 环境变量

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 字体的屏幕截图

在此处输入图片描述

使用 DejaVu 字体的屏幕截图

在此处输入图片描述

答案1

我只是从您的示例中复制了字符并在终端窗口中回显它们:

GNOME 终端中的 UTF-8 字符测试

我猜 TTY 没有那么多字符支持,所以这可能是字体问题。

答案2

我支持@lgarzo。你可以尝试一些字体,特别是东方字体:

$ aptitude install ttf-wqy-microhei

答案3

... putty(UTF8+使用Unicode ...

与使用十六进制转义序列相比,使用实际字符来测试常驻字体可能更容易(如果缺少一个字符,这将是一个矛盾的说法,因为不可能选择它! - 这意味着源机器必须创建一个包含所需符号的文件,然后用目标机器显示该文件)。

还可以使用 unicode 的字符/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+2318UTF-16: 0x2318UTF-8: 0xE2 0x8C 0x98

通过在 中逐字搜索,可以找到字符的字体详细信息character map。它作为图标实用程序运行,或使用gnome-character-mapgucharmap终端命令激活。按住鼠标右键,在字符上找到驻留字体。此外,在菜单Show only glyphs in this font中使用View,然后使用箭头键滚动字体列表,可以快速找到该字符的字体以及其他驻留字符。

在此处输入图片描述

哎呀,
下面的先前答案重申了显而易见的事实 - 正在查看答案而不是问题


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 符号是错误的
参考: 如何纠正 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 ␅ 

相关内容