Une façon simple de différencier UTF-8 et UTF-16 est d'identifier les points communs entre eux.
Outre le fait qu'ils partagent le même numéro d'unicode pour un caractère donné, ils ont chacun leur propre format.
UTF-8 essaie de représenter, chaque numéro unicode donné au caractère avec un octet (s'il est ASCII), sinon 2 deux octets, sinon 4 octets et ainsi de suite...
UTF-16 essaie de représenter chaque numéro unicode donné au caractère avec deux octets pour commencer. Si deux octets ne sont pas suffisants, on utilise 4 octets. Si cela n'est pas non plus suffisant, alors on utilise 6 octets.
En théorie, l'UTF-16 est plus économe en espace, mais en pratique, l'UTF-8 est plus économe en espace car la plupart des caractères (98 % des données) à traiter sont ASCII et l'UTF-8 essaie de les représenter avec un seul octet alors que l'UTF-16 essaie de les représenter avec 2 octets.
De plus, UTF-8 est un sur-ensemble de l'encodage ASCII. Ainsi, toute application qui attend des données ASCII sera également acceptée par le processeur UTF-8. Ce n'est pas vrai pour l'UTF-16. L'UTF-16 ne peut pas comprendre l'ASCII, ce qui constitue un obstacle majeur à l'adoption de l'UTF-16.
Un autre point à noter est que tous les UNICODE à ce jour pourraient tenir dans 4 octets d'UTF-8 maximum (en considérant toutes les langues du monde). C'est la même chose que l'UTF-16 et il n'y a pas de réel gain d'espace par rapport à l'UTF-8 ( https://stackoverflow.com/a/8505038/3343801 )
C'est pourquoi les gens utilisent UTF-8 dans la mesure du possible.
4 votes
Jon skeet a un bon article sur l'encodage.... csharpindepth.com/Articles/General/Unicode.aspx