Emoticon tampaknya ditentukan menggunakan format U + xxxxx
dimana masing-masing x adalah digit heksadesimal.
Misalnya, U + 1F615 adalah kode Konsorsium Unicode resmi untuk "wajah bingung" π
Karena saya sering bingung, saya memiliki ikatan yang kuat dengan simbol ini.
The U + 1F615 representasi membingungkan untuk saya karena saya pikir satu-satunya pengkodean mungkin untuk karakter unicode diperlukan 8, 16, 24 atau 32 bit, sedangkan 5 digit hex membutuhkan 5x4 = 20 bit.
Saya telah menemukan bahwa simbol ini tampaknya diwakili oleh string hex yang sama sekali berbeda di bash:
$echo -n π | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
π
$PS1=$'\xf0\x9f\x98\x95 >'
π >
Saya mengharapkan U + 1F615 untuk dikonversi ke sesuatu seperti \ x00 \ x01 \ xF6 \ x15 .
Saya tidak melihat hubungan antara 2 penyandian ini?
Ketika saya mencari simbol di daftar Konsorsium Unicode resmi , saya ingin dapat menggunakan kode itu secara langsung tanpa harus mengonversi secara manual dengan cara yang membosankan ini. yaitu
- menemukan simbol di beberapa halaman web
- menyalinnya ke clipboard browser web
- menempelkannya di bash untuk menggema melalui hexdump untuk menemukan kode NYATA.
Bisakah saya menggunakan kode 20-bit ini untuk menentukan apa kode 32-bit itu?
Apakah ada hubungan antara 2 angka ini?
\U1F615
diikuti oleh digit heksadesimal lain yang valid maka itu akan dianggap sebagai bagian dari urutan escape. Untuk membuatnya bekerja terlepas dari apa yang diikuti oleh itu, harus memiliki cukup nol mengarah tepat tepat delapan digit:\U0001F615