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

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

En quoi sont-ils utiles pour les programmeurs?

300
demandé sur Hakam Fostok 2009-03-31 10:02:25

2 réponses

Aller dans votre liste:

  • "Unicode" N'est pas un encodage, bien que malheureusement, beaucoup de documentation l'utilise imprécis pour faire référence à l'encodage Unicode que ce système utilise par défaut. Sous Windows et Java, cela signifie souvent UTF-16; dans de nombreux autres endroits, cela signifie UTF-8. Correctement, Unicode fait référence au jeu de caractères abstrait lui-même, pas à un encodage particulier.
  • UTF-16 : 2 Octets par "unité de code". C'est le format natif de chaînes dans. NET, et généralement dans Windows et Java. Les valeurs en dehors du plan multilingue de base (BMP) sont codées en paires de substitution. (Ceux - ci sont relativement rarement utilisés-ce qui est un bon travail, car très peu de développeurs les obtiennent correctement, je soupçonne. Je doute fort que je le fais.)
  • UTF-8 : encodage de longueur Variable, 1-4 octets par point de code. Les valeurs ASCII sont codées en ASCII en utilisant 1 octet.
  • UTF-7 : généralement utilisé pour l'encodage du courrier. Les Chances sont si vous pensez vous en avez besoin et vous ne faites pas de courrier, vous avez tort. (C'est juste mon expérience de personnes postant dans des groupes de discussion, etc. - en dehors du courrier, ce n'est vraiment pas largement utilisé du tout.)
  • UTF-32 : codage de 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 le cadre de ma bibliothèque MiscUtil , Si vous le souhaitez. (Il n'a pas été très soigneusement testé, vous l'esprit.)
  • ASCII : unique encodage d'octets uniquement en utilisant les 7 bits inférieurs. (Points de code Unicode 0-127.) Pas d'accents, etc.
  • ANSI: il n'y a pas de codage ANSI fixe - il y en a beaucoup. Habituellement, quand les gens disent "ANSI", ils signifient "la locale/page de code par défaut pour mon système" qui est obtenue via l'encodage .Par défaut, et est souvent , Windows-1252, mais peut être d'autres localités.

Il y a plus sur ma page Unicode et conseils pour déboguer les problèmes Unicode .

L'autre la grande ressource du code est unicode.org {[6] } qui contient plus d'informations que vous ne serez jamais en mesure de travailler votre chemin à travers - peut-être le bit le plus utile est le graphiques de code.

410
répondu Jon Skeet 2016-03-03 22:02:07

Quelques lectures pour vous aider à démarrer sur les encodages de caractères: Joel sur le logiciel: Le Minimum absolu chaque développeur de logiciels absolument, positivement doit connaître Unicode et jeux de caractères (pas D'Excuses!)

Au fait - ASP.NET ça n'a rien à voir avec ça. Les encodages sont universels.

56
répondu Tomalak 2009-03-31 06:10:06