Плохое кодирование с помощью urxvt и презто на Arch
Я использую Arch Linux с urxvt-unicode, и когда я выполняю команду для проверки совместимости моего терминала с Prezto, в нем отсутствуют некоторые символы:
Моя локаль выглядит следующим образом:
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 ответ
Хм, следующий скрипт Python 3.5.1 показывает, что некоторые символы Co
Unicode категория т.е. Другое, Частное Использование. Следовательно, ваше приложение должно использовать шрифт, содержащий такие закрытые символы, чтобы правильно их отображать.
>>> 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