Les émoticônes semblent être spécifiées en utilisant un format U + xxxxx
dans lequel chaque x est un chiffre hexadécimal.
Par exemple, U + 1F615 est le code officiel Unicode Consortium pour le "visage confus" 😕
Comme je suis souvent confus, j'ai une forte affinité pour ce symbole.
La représentation U + 1F615 me déroute parce que je pensais que les seuls encodages possibles pour les caractères unicode nécessitaient 8, 16, 24 ou 32 bits, alors que 5 chiffres hexadécimaux nécessitent 5x4 = 20 bits.
J'ai découvert que ce symbole semble être représenté par une chaîne hexadécimale complètement différente dans bash:
$echo -n 😕 | hexdump
0000000 f0 9f 98 95
0000004
$echo -e "\xf0\x9f\x98\x95"
😕
$PS1=$'\xf0\x9f\x98\x95 >'
😕 >
Je m'attendais à ce que U + 1F615 se convertisse en quelque chose comme \ x00 \ x01 \ xF6 \ x15 .
Je ne vois pas la relation entre ces 2 encodages?
Lorsque je recherche un symbole dans la liste officielle du Consortium Unicode , j'aimerais pouvoir utiliser ce code directement sans avoir à le convertir manuellement de cette façon fastidieuse. c'est à dire
- trouver le symbole sur une page Web
- le copier dans le presse-papiers du navigateur Web
- le coller dans bash pour faire écho à travers un hexdump pour découvrir le code REAL.
Puis-je utiliser ce code 20 bits pour déterminer quel est le code 32 bits?
Existe-t-il une relation entre ces 2 nombres?
\U1F615
est suivi d'un autre chiffre hexadécimal valide, alors il sera supposé faire partie de la séquence d'échappement. Pour le faire fonctionner, peu importe ce qu'il est suivi, il doit avoir suffisamment de zéros de tête pour être exactement huit chiffres:\U0001F615