Emotikony wydają się być określone przy użyciu formatu U + xxxxx, w
którym każdy x jest cyfrą szesnastkową.
Na przykład U + 1F615 to oficjalny kod konsorcjum Unicode dla „zdezorientowanej twarzy” 😕
Ponieważ często jestem zdezorientowany, mam silne powinowactwo do tego symbolu.
Reprezentacja U + 1F615 jest dla mnie myląca, ponieważ myślałem, że jedyne możliwe kodowanie znaków Unicode wymaga 8, 16, 24 lub 32 bitów, podczas gdy 5 cyfr szesnastkowych wymaga 5x4 = 20 bitów.
Odkryłem, że ten symbol wydaje się być reprezentowany przez zupełnie inny ciąg szesnastkowy w bash:
$echo -n 😕 | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
😕
$PS1=$'\xf0\x9f\x98\x95 >'
😕 >
Spodziewałbym się, że U + 1F615 przekonwertuje na coś takiego jak \ x00 \ x01 \ xF6 \ x15 .
Nie widzę związku między tymi 2 kodowaniami?
Kiedy szukam symbolu na oficjalnej liście konsorcjum Unicode , chciałbym móc użyć tego kodu bezpośrednio, bez konieczności ręcznej konwersji w tak żmudny sposób. to znaczy
- znalezienie symbolu na jakiejś stronie internetowej
- kopiowanie do schowka przeglądarki internetowej
- wklejenie go w bash, aby wywołać echo przez zrzut heksowy i odkryć PRAWDZIWY kod.
Czy mogę użyć tego 20-bitowego kodu, aby ustalić, co to jest 32-bitowy kod?
Czy istnieje związek między tymi 2 liczbami?
\U1F615
po nim następuje kolejna ważna cyfra szesnastkowa, to będzie to założone, że jest częścią sekwencji specjalnej. Aby działało niezależnie od tego, po czym następuje, musi mieć wystarczającą liczbę zer wiodących, aby mieć dokładnie osiem cyfr:\U0001F615