Друг вставив команду в кімнату чату 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).