Biểu tượng cảm xúc dường như được chỉ định bằng cách sử dụng định dạng U + xxxxx
trong đó mỗi x là một chữ số thập lục phân.
Ví dụ: U + 1F615 là mã Unicode Consortium chính thức cho "khuôn mặt bối rối"
Như tôi thường bối rối, tôi có một mối quan hệ mạnh mẽ với biểu tượng này.
Đại diện U + 1F615 gây nhầm lẫn cho tôi vì tôi nghĩ rằng mã hóa duy nhất có thể cho các ký tự unicode cần 8, 16, 24 hoặc 32 bit, trong khi 5 chữ số hex yêu cầu 5x4 = 20 bit.
Tôi đã phát hiện ra rằng biểu tượng này dường như được biểu thị bằng một chuỗi hex hoàn toàn khác trong bash:
$echo -n 😕 | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
😕
$PS1=$'\xf0\x9f\x98\x95 >'
😕 >
Tôi đã mong đợi U + 1F615 chuyển đổi thành thứ gì đó như \ x00 \ x01 \ xF6 \ x15 .
Tôi không thấy mối quan hệ giữa 2 bảng mã này?
Khi tôi tìm kiếm một biểu tượng trong danh sách Hiệp hội Unicode chính thức , tôi muốn có thể sử dụng mã đó trực tiếp mà không phải chuyển đổi thủ công theo cách tẻ nhạt này. I E
- tìm biểu tượng trên một số trang web
- sao chép nó vào clipboard của trình duyệt web
- dán nó trong bash để lặp lại thông qua hexdump để khám phá mã REAL.
Tôi có thể sử dụng mã 20 bit này để xác định mã 32 bit là gì không?
Có một mối quan hệ tồn tại giữa 2 số này?
\U1F615
được theo sau bởi một chữ số thập lục phân hợp lệ khác thì đó sẽ được coi là một phần của chuỗi thoát. Để làm cho nó hoạt động bất kể nó đi theo cái gì, nó phải có đủ các số 0 đứng đầu dài chính xác tám chữ số:\U0001F615