152 votes

Différence entre UTF-8 et UTF-16 ?

Différence entre UTF-8 et UTF-16 ? Pourquoi en avons-nous besoin ?

MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "This is some text";

md.update(text.getBytes("UTF-8")); // Change this to "UTF-16" if needed
byte[] digest = md.digest();

4 votes

Jon skeet a un bon article sur l'encodage.... csharpindepth.com/Articles/General/Unicode.aspx

-3voto

Venkateswara Rao Points 2374

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X