Page 1 sur 1

Un 4x4 de caractère !

Publié : sam. 06/mai/2023 22:13
par Ollivier
Salut, à l'instant je suis tombé sur une discussion anglophone, et je souhaite la partager.

Ça concerne les caractères et leur traitement.

Pour illustrer brièvement, je vais schématiser les caractères par leur taille d'occupation en mémoire.

1 octet c'est ça :Une case à peu près carré. Ça sera l'unité.

Au début, il y avait l'ASCII et l'UTF-8.

Un caractère ASCII: Un caractère UTF8:

Code : Tout sélectionner

[ ] 1 octet d'occupation
OU
[ ][ ][ ] 3 octets d'occupation
OU (mais ça devient beaucoup plus rare)
[ ][ ][ ][ ][ ] 5 octets d'occupation
etc...
(1 + 2N octets)

Puis on a l'UNICODE et l'UTF-16.

Un caractère UNICODE:

Code : Tout sélectionner

[ ][ ]
Un caractère UTF-16:

Code : Tout sélectionner

[ ][ ]
OU
[ ][ ][ ][ ][ ][ ]
OU plusseux, mais on va dire qu'on s'en tamponne.
Donc 2 + 4N octets

La discussion est

Et STARGÅTE semble avoir posté (il y a 6 ans) une solution assez souple ici

Libre à vous de choisir quelle solution vous semble la plus utile. En tout cas, ces solutions vous donnent les fonctions de chaîne de base réécrites pour apréhender un peu les diverses formes d'occupation mémoire que peut prendre un caractère.

Re: Un 4x4 de caractère !

Publié : lun. 08/mai/2023 10:33
par Fig
Merci pour ce rappel très clairement expliqué ! :P

Re: Un 4x4 de caractère !

Publié : mar. 09/mai/2023 17:11
par boddhi
Merci pour l'info.

Dommage que certaines foncions de la lib RegularExpression ne gèrent pas correctement toutes ces considérations.
Ce qui rend, par exemple, quasi impossible l'extraction de données sur des pages internet lorsqu'elles sont encodées en UTF-8 et que certains caractères ont un codage 'surrogate'...