379 votes

Différences entre les formats Unicode, UTF, ASCII et ANSI

Quelle est la différence entre le Unicode , UTF8 , UTF7 , UTF16 , UTF32 , ASCII y ANSI codages ?

En quoi sont-ils utiles aux programmeurs ?

0 votes

Le meilleur site à consulter est le suivant : msdn.microsoft.com/fr/us/library/dd374081(VS.85).aspx

6 votes

Très lié : UTF-8 vs Unicode

511voto

Jon Skeet Points 692016

Je descends ta liste :

  • " Unicode "n'est pas un encodage, bien que malheureusement, beaucoup de documentation l'utilise de manière imprécise pour se référer à l'encodage Unicode que le système particulier utilise par défaut. Sous Windows et Java, cela signifie souvent UTF-16 ; dans de nombreux autres endroits, cela signifie UTF-8. En réalité, Unicode fait référence au jeu de caractères abstrait lui-même, et non à un encodage particulier.
  • UTF-16 : 2 octets par "unité de code". C'est le format natif des chaînes de caractères dans .NET, et généralement dans Windows et Java. Les valeurs situées en dehors de l'unité de code Plan de base multilingue (BMP) sont codés sous forme de paires de substitution. Ces utilisé pour être relativement peu utilisés, mais désormais de nombreuses applications grand public devront connaître les caractères non-BMP afin de prendre en charge les emojis.
  • UTF-8 : Codage à longueur variable, 1 à 4 octets par point de code. Les valeurs ASCII sont codées comme ASCII en utilisant 1 octet.
  • UTF-7 : Généralement utilisé pour le codage du courrier. Si vous pensez en avoir besoin et que vous ne faites pas de courrier, il y a de fortes chances que vous vous trompiez. (C'est juste mon expérience des personnes qui postent dans les groupes de discussion, etc. - en dehors du courrier, il n'est pas du tout utilisé).
  • UTF-32 : Codage à largeur fixe utilisant 4 octets par point de code. Ce n'est pas très efficace, mais cela facilite la vie en dehors du BMP. J'ai un programme .NET Utf32String dans le cadre de mon MiscUtil bibliothèque, si jamais vous en avez besoin. (Elle n'a pas été testée de manière très approfondie, remarquez).
  • ASCII : Codage sur un seul octet en utilisant uniquement les 7 bits inférieurs. (Points de code Unicode 0-127.) Pas d'accents, etc.
  • ANSI : Il n'y a pas un seul encodage ANSI fixe - il y en a beaucoup. Généralement, quand les gens disent "ANSI", ils veulent dire "la locale/codepage par défaut pour mon système", qui est obtenue via Encodage.par défaut et est souvent Windows-1252 mais peut être d'autres localités.

Il y en a plus sur ma page Unicode y conseils pour le débogage des problèmes Unicode .

L'autre grande ressource de code est unicode.org qui contient plus d'informations que vous ne pourrez jamais vous y retrouver - l'élément le plus utile est sans doute la rubrique tableaux de codes .

0 votes

En fait, je pense que l'ANSI est Code Page 437 car c'est ce qu'utilisait ANSI Art. Cependant, je ne pense pas que cela soit disponible en ASP.Net.

7 votes

Le terme "ANSI" appliqué aux pages de code 8 bits de Microsoft est une erreur. Elles étaient basées sur des projets soumis à la normalisation de l'ANSI, mais l'ANSI elle-même ne les a jamais normalisées. Windows-1252 (la page de codes la plus communément appelée "ANSI") est similaire à ISO 8859-1 (Latin-1), sauf que Windows-1252 possède des caractères imprimables dans la plage 0x80..0x9F, alors que ISO 8859-1 possède des caractères de contrôle dans cette plage. Unicode a également des caractères de contrôle dans cette plage. fr.wikipedia.org/wiki/Windows_code_page

0 votes

@JonSkeet, j'ai quelques pages web qui envoient des messages électroniques. Actuellement, elles utilisent UTF8. Devrais-je envisager de les ramener en UTF7 ?

74voto

Tomalak Points 150423

Quelques lectures pour débuter sur les codages de caractères : Joel on Software : Le minimum absolu que tout développeur de logiciels doit absolument, positivement connaître sur l'Unicode et les jeux de caractères (pas d'excuses !)

D'ailleurs, ASP.NET n'a rien à voir avec cela. Les encodages sont universels.

12 votes

Réponse ici 6 ans après que l'article ait été écrit. Je l'ai lu 8 ans après que l'article ait été écrit. 14 ans plus tard et c'est toujours une bonne lecture. C'est plus de la moitié de ma vie. Incroyable.

0 votes

Une autre ressource utile similaire : youtube.com/watch?v=MijmeoH9LT4

1 votes

18 ans plus tard, toujours à lire absolument

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