Một người bạn đã dán lệnh vào một phòng chat Slack có chứa nhân vật *
. Điều này trông giống như bình thường *
nhưng không phải là:
$ uniprops '*'
uniprops: no character named ‹*›
Trong khi nếu tôi chạy uniprops
trên dấu sao tôi nhận được khi gõ trên máy thì tôi nhận được:
$ 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
Tôi cũng có thể thấy rằng đó không phải là một dấu sao thực sự bằng cách chuyển qua od
:
$ printf '*' | od -c
0000000 * 342 200 213
0000004
Trong khi người bình thường cho:
$ printf '*' | od -c
0000000 *
0000001
Đây là nhân vật bí ẩn lớn hơn một chút:
*
Và dấu hoa thị bình thường (vâng, chúng trông giống hệt nhau):
*
Vì vậy, uniprops
không biết đây là gì và tôi cũng không thể tìm thấy nó trên http://www.fileformat.info/ . Tôi biết rằng người bạn đã dán nó trên OS X (tôi đang dùng Linux) và nó hoạt động trên hệ thống của họ như một dấu hoa thị thông thường. Tôi giả định rằng Slack bằng cách nào đó đã thay đổi nó. Vậy, có ai có ý kiến gì về nhân vật đó không?
Lưu ý rằng bạn không thể sao chép ký tự lạ trực tiếp từ câu hỏi. Rõ ràng, công cụ Stack Exchange loại bỏ các ký tự không in dấu. Thay vào đó, nhấp vào liên kết "chỉnh sửa" và sao chép từ đó.
uniprops
là một tập lệnh nhỏ gọn trong Unicode::Tussle
mô-đun Perl xác định và in thông tin về ký tự bạn cung cấp.
urxvt
, nó đã được hiển thị dưới dạng *<200b>
.
'*\u200b'
)
ord("*")
cho chuỗi đã dán của bạn và*
khóa gốc và có cùng số cho cả hai (42).