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