在Arch上使用urxvt和prezto编码错误

时间:2017-02-02 12:57:14

标签: unicode utf-8 archlinux prezto

我使用带有urxvt-unicode的Arch Linux,当我执行命令来测试my terminal is compatible with Prezto时,它缺少一些字符:

enter image description here

我的语言区域如下:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

1 个答案:

答案 0 :(得分:0)

Hum,在 Python 3.5.1 脚本后面显示某些字符为Co Unicode category,即其他,私人使用。因此,您的应用应使用包含此类私有字符的字体来正确呈现它们。

>>> import unicodedata
>>>
>>> for char in u'\ue0b0',u'\u00b1',u'\ue0a0',u'\u27a6',u'\u2718',u'\u26a1',u'\u2699':
...     print (char, unicodedata.category(char), unicodedata.name(char,'private use'))
...
 Co private use
± Sm PLUS-MINUS SIGN
 Co private use
➦ So HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
✘ So HEAVY BALLOT X
⚡ So HIGH VOLTAGE SIGN
⚙ So GEAR
>>>

比较类似 PowerShell 脚本的结果:

> 0xe0b0,0x00b1,0xe0a0,0x27a6,0x2718,0x26a1,0x2699 | Get-CharInfo | Format-Table -AutoSize

Char CodePoint    Category Description                                    
---- ---------    -------- -----------                                    
    U+E0B0     PrivateUse Private Use                                    
   ± U+00B1     MathSymbol Plus-Minus Sign                                
    U+E0A0     PrivateUse Private Use                                    
   ➦ U+27A6    OtherSymbol Heavy Black Curved Upwards And Rightwards Arrow
   ✘ U+2718    OtherSymbol Heavy Ballot X                                 
   ⚡ U+26A1    OtherSymbol High Voltage Sign                              
   ⚙ U+2699    OtherSymbol Gear