web-dev-qa-db-fra.com

Différences de format Unicode, UTF, ASCII, ANSI

Quelle est la différence entre les encodages Unicode, UTF8, UTF7, UTF16, UTF32, ASCII et ANSI?

En quoi sont-ils utiles pour les programmeurs?

329
web dunia

En descendant votre liste:

  • " nicode " n'est pas un codage, bien que, malheureusement, de nombreux documents l'utilisent de manière imprécise pour faire référence au codage Unicode utilisé par défaut par ce système. Sous Windows et Java, cela signifie souvent UTF-16; dans beaucoup d'autres endroits, cela signifie UTF-8. Correctement, Unicode fait référence au jeu de caractères abstrait lui-même et non à un codage particulier.
  • TF-16 : 2 octets par "unité de code". Il s'agit du format natif des chaînes dans .NET et généralement sous Windows et Java. Les valeurs hors du plan multilingue de base (BMP) sont codées sous forme de paires de substitution. (Ils sont relativement peu utilisés - ce qui est un bon travail, car très peu de développeurs le comprennent bien, je suppose. Je doute fort que ce soit le cas.)
  • TF-8 : Codage à longueur variable, 1 à 4 octets par point de code. Les valeurs ASCII sont codées en tant que ASCII sur 1 octet.
  • TF-7 : généralement utilisé pour le codage du courrier. Les chances sont si vous pensez que vous en avez besoin et que vous ne faites pas le courrier, vous avez tort. (Ce n'est que mon expérience des personnes postant dans des groupes de discussion, etc. - en dehors du courrier, ce n'est vraiment pas très utilisé du tout.)
  • TF-32 : Encodage à largeur fixe utilisant 4 octets par point de code. Ce n'est pas très efficace, mais rend la vie plus facile en dehors du BMP. J'ai une classe .NET Utf32String dans ma bibliothèque MiscUtil , si vous en aviez envie. (Cela n'a pas été testé de manière approfondie, remarquez.)
  • ASCII : Codage sur un octet uniquement avec les 7 bits inférieurs. (Les points de code Unicode sont compris entre 0 et 127.) Aucun accent, etc.
  • ANSI: Il n'y a pas de codage ANSI fixe - il y en a beaucoup. Habituellement, lorsque les gens disent "ANSI", ils signifient "les paramètres régionaux/page de code par défaut de mon système" obtenus via Encoding.Default , et souvent Windows-1252 , mais peuvent l'être. autres lieux.

Il y a plus sur ma page Unicode et astuces pour résoudre les problèmes Unicode .

L’autre grande ressource de code est nicode.org , qui contient plus d’informations que vous ne pourrez jamais parcourir. Le bit le plus utile est probablement le tableaux de code .

447
Jon Skeet

Quelques lectures pour vous aider à démarrer sur les encodages de caractères: Joel sur le logiciel: le minimum absolu que chaque développeur de logiciel a absolument, doit savoir sur l’Unicode et les jeux de caractères (sans excuses!)

En passant, ASP.NET n’a rien à voir avec cela. Les codages sont universels.

65
Tomalak