2010-01-11 6 views
5

Hallo ich bin ein Anfänger in Programmierung und Netzwerkentwicklung. Ich habe eine Frage bezüglich der ASCII- und Unicode-Codierung.C# ASCII oder Unicode

in Msdn und andere Web-Beispiele wie folgt vor:

byte[] byteData = Encoding.ASCII.GetBytes(data); 

ist dies, weil diese Codebeispiele alt sind? sollte es nicht sein:

byte[] byteData = Encoding.Unicode.GetBytes(data); 

danke für Ihre Eingabe!

Antwort

10

Es hängt davon ab - wollen Sie das Ergebnis in ASCII oder UTF-16 sein? Jedes ist falsch, wenn Sie das andere wollen.

Wenn Sie ein Netzwerkprotokoll sprechen, müssen Sie herausfinden, welche Zeichencodierung vom Protokoll erwartet wird. Verwenden Sie die falsche Codierung, und schlechte Dinge passieren.

Natürlich hat ASCII massive Einschränkungen - es ist sehr Englisch-basiert (nur lateinische Zeichen, keine Akzente), aber es ist für einige Protokolle richtig. Andere können UTF-16 (Encoding.Unicode), UTF-8 oder andere Kodierungen verwenden ... oder sie lassen Sie die Kodierung selbst innerhalb des Protokolls angeben.

+0

im implementieren beide seite des clients/server, so dass ich zu entscheiden. ich sehe Unicode als die Wahl, da es in der Lage ist, verschiedene Sprachen zu beherbergen. ich kann mich irren! – iTEgg

+7

@ikurtz: Ich würde vorschlagen, UTF-8 anstelle von Unicode für die meisten Dinge zu verwenden, da es * normalerweise * den Verkehr einschränkt. Es gibt Ausnahmen (Fernöstliche Zeichen sind oft größer in UTF-8) und es gibt noch andere Nachteile (Sie können die Größe der Binärdaten nicht direkt aus der Anzahl der Codepunkte berechnen), aber IMO ist im Allgemeinen eine gute Idee . –

+0

sehr guter Punkt bezüglich der Nachrichtengröße! Ich verstehe, warum sie ASCII verwenden. – iTEgg

Verwandte Themen