411 Stimmen

Unterschiede zwischen den Formaten Unicode, UTF, ASCII und ANSI

Was ist der Unterschied zwischen dem Unicode , UTF8 , UTF7 , UTF16 , UTF32 , ASCII et ANSI Kodierungen?

Inwieweit sind diese für Programmierer hilfreich?

558voto

Jon Skeet Punkte 1325502

Sie gehen Ihre Liste abwärts:

  • " Unicode " ist keine Kodierung, obwohl es leider in vielen Dokumentationen ungenau verwendet wird, um auf die Unicode-Kodierung zu verweisen, die das jeweilige System standardmäßig verwendet. Unter Windows und Java ist damit oft UTF-16 gemeint, an vielen anderen Stellen ist es UTF-8. Korrekterweise bezieht sich Unicode auf den abstrakten Zeichensatz selbst, nicht auf eine bestimmte Kodierung.
  • UTF-16 2 Bytes pro "Code-Einheit". Dies ist das native Format von Strings in .NET und allgemein in Windows und Java. Werte außerhalb der Basic Multilingual Plane (BMP) werden als Surrogatpaare kodiert. Diese war früher Die Emojis werden relativ selten verwendet, aber viele Verbraucheranwendungen müssen nun auch Nicht-BMP-Zeichen kennen, um Emojis unterstützen zu können.
  • UTF-8 : Kodierung mit variabler Länge, 1-4 Bytes pro Codepunkt. ASCII-Werte werden als ASCII mit 1 Byte kodiert.
  • UTF-7 : Wird normalerweise für die Verschlüsselung von E-Mails verwendet. Wenn Sie denken, dass Sie es brauchen und keine Mails verschicken, liegen Sie wahrscheinlich falsch. (Das ist nur meine Erfahrung mit Leuten, die in Newsgroups usw. posten - außerhalb von Mail wird es kaum verwendet).
  • UTF-32 : Feste Breitencodierung mit 4 Bytes pro Codepunkt. Das ist nicht sehr effizient, macht aber das Leben außerhalb des BMP einfacher. Ich habe eine .NET Utf32String Klasse als Teil meiner MiscUtil Bibliothek, falls Sie sie jemals brauchen sollten. (Sie wurde allerdings noch nicht sehr gründlich getestet.)
  • ASCII : Ein-Byte-Kodierung, bei der nur die unteren 7 Bits verwendet werden. (Unicode-Codepunkte 0-127.) Keine Akzente usw.
  • ANSI: Es gibt nicht die eine feste ANSI-Kodierung - es gibt eine Menge davon. Normalerweise meinen die Leute, wenn sie "ANSI" sagen, "die Standard-Locale/Codeseite für mein System", die man über Kodierung.Standard und ist oft Fenster-1252 können aber auch andere Orte sein.

Es gibt mehr auf meine Unicode-Seite y Tipps zur Fehlersuche bei Unicode-Problemen .

Die andere große Code-Ressource ist unicode.org die mehr Informationen enthält, als Sie jemals durcharbeiten können - der vielleicht nützlichste Teil ist die Code-Tabellen .

81voto

Tomalak Punkte 320467

Einige Lektüre für den Einstieg in das Thema Zeichenkodierung: Joel über Software: Das absolute Minimum, das jeder Softwareentwickler unbedingt über Unicode und Zeichensätze wissen muss (keine Ausreden!)

Übrigens - ASP.NET hat damit nichts zu tun. Kodierungen sind universell.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X