Ç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 :
Code : Tout sélectionner
[ ]
Au début, il y avait l'ASCII et l'UTF-8.
Un caractère ASCII:
Code : Tout sélectionner
[ ]
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...
Puis on a l'UNICODE et l'UTF-16.
Un caractère UNICODE:
Code : Tout sélectionner
[ ][ ]
Code : Tout sélectionner
[ ][ ]
OU
[ ][ ][ ][ ][ ][ ]
OU plusseux, mais on va dire qu'on s'en tamponne.
La discussion est là
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.