Друг вставил команду в чат-комнату Slack, в которой был персонаж *
. Это выглядит нормально, *
но не так:
$ uniprops '*'
uniprops: no character named ‹*›
Хотя, если я запускаю uniprops
звездочку, полученную при наборе текста на моей машине, я получаю:
$ uniprops '*'
U+002A ‹*› \N{ASTERISK}
\pP \p{Po}
All Any ASCII Assigned Basic_Latin Punct Is_Punctuation Common Zyyy Po P
Gr_Base Grapheme_Base Graph X_POSIX_Graph GrBase Other_Punctuation
Pat_Syn Pattern_Syntax PatSyn POSIX_Graph POSIX_Print POSIX_Punct Print
X_POSIX_Print Punctuation Unicode X_POSIX_Punct
Я также вижу, что это не настоящая звездочка, пропустив ее через od
:
$ printf '*' | od -c
0000000 * 342 200 213
0000004
В то время как нормальный дает:
$ printf '*' | od -c
0000000 *
0000001
Вот загадочный персонаж немного больше:
*
И обычная звездочка (да, они выглядят одинаково):
*
Итак, я uniprops
не знаю, что это такое, и я не могу найти его на http://www.fileformat.info/ . Я знаю, что друг, который вставил его, находится на OS X (я на Linux) и что он работает в их системе как обычная звездочка. Я предполагаю, что Слэк как-то изменил это. Итак, кто-нибудь знает, что это за персонаж?
Обратите внимание, что вы не можете скопировать странный символ непосредственно из вопроса. По-видимому, механизм Stack Exchange удаляет конечные непечатаемые символы. Нажмите на ссылку «Изменить» и скопируйте оттуда.
uniprops
это аккуратный маленький скрипт, включенный в Unicode::Tussle
модуль Perl, который идентифицирует и печатает информацию о персонаже, которого вы ему даете.
urxvt
, он уже отображается как *<200b>
.
'*\u200b'
тоже самое)
ord("*")
для вашей вставленной строки и нативный*
ключ, и получил одинаковое число для обоих (42).