Los emoticones parecen estar especificados usando un formato de U + xxxxx
en el que cada x es un dígito hexadecimal.
Por ejemplo, U + 1F615 es el código oficial del Consorcio Unicode para la "cara confundida" 😕
Como a menudo estoy confundido, tengo una fuerte afinidad por este símbolo.
El U + 1F615 representación de me resulta confusa porque pensé que las únicas codificaciones posibles para caracteres unicode requerían 8, 16, 24 o 32 bits, mientras que 5 dígitos hexadecimales requieren 5x4 = 20 bits.
Descubrí que este símbolo parece estar representado por una cadena hexadecimal completamente diferente en bash:
$echo -n 😕 | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
😕
$PS1=$'\xf0\x9f\x98\x95 >'
😕 >
Hubiera esperado que U + 1F615 se convirtiera en algo así como \ x00 \ x01 \ xF6 \ x15 .
¿No veo la relación entre estas 2 codificaciones?
Cuando busco un símbolo en la lista oficial del Consorcio Unicode , me gustaría poder usar ese código directamente sin tener que convertirlo manualmente de esta manera tediosa. es decir
- encontrar el símbolo en alguna página web
- copiarlo al portapapeles del navegador web
- pegándolo en bash para hacer eco a través de un hexdump para descubrir el código REAL.
¿Puedo usar este código de 20 bits para determinar cuál es el código de 32 bits?
¿Existe una relación entre estos 2 números?
\U1F615
le sigue otro dígito hexadecimal válido, se supondrá que forma parte de la secuencia de escape. Para que funcione independientemente de lo que le sigue tiene que tener ceros a ser exactamente ocho dígitos de longitud suficiente:\U0001F615