Os emoticons parecem ser especificados usando um formato de U + xxxxx,
em que cada x é um dígito hexadecimal.
Por exemplo, U + 1F615 é o código oficial do Unicode Consortium para a "cara confusa" 😕
Como muitas vezes estou confuso, tenho uma forte afinidade por esse símbolo.
A representação U + 1F615 é confusa para mim, porque eu pensava que as únicas codificações possíveis para caracteres unicode exigiam 8, 16, 24 ou 32 bits, enquanto 5 dígitos hexadecimais requerem 5x4 = 20 bits.
Eu descobri que esse símbolo parece ser representado por uma string hexadecimal completamente diferente no bash:
$echo -n 😕 | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
😕
$PS1=$'\xf0\x9f\x98\x95 >'
😕 >
Eu esperava que o U + 1F615 se convertesse em algo como \ x00 \ x01 \ xF6 \ x15 .
Não vejo a relação entre essas duas codificações?
Quando procuro um símbolo na lista oficial do Unicode Consortium , gostaria de poder usar esse código diretamente sem precisar convertê-lo manualmente dessa maneira tediosa. ie
- localizando o símbolo em alguma página da web
- copiando-o para a área de transferência do navegador da web
- colá-lo no bash para ecoar através de um hexdump para descobrir o código REAL.
Posso usar esse código de 20 bits para determinar qual é o código de 32 bits?
Existe uma relação entre esses 2 números?
\U1F615
for seguido por outro dígito hexadecimal válido, será considerado parte da sequência de escape. Para fazê-lo funcionar, independentemente do que é seguido, ele deve ter zeros à esquerda suficientes para ter exatamente oito dígitos:\U0001F615