Unterschied zwischen Encoding.UTF8.GetBytes und UTF8Encoding.Default.GetBytes

8

Kann mir bitte jemand erklären, was der Unterschied ist. Encoding.UTF8.GetBytes und UTF8Encoding.Default.GetBytes? Eigentlich versuche ich eine XML-Zeichenfolge in ein Stream-Objekt zu konvertieren und was jetzt passiert, ist immer wenn ich diese Zeile verwende:

%Vor%

es gibt mir einen Fehler "System.Xml.XmlException: Ungültiges Zeichen in der angegebenen Codierung"

aber wenn ich diese Zeile verwende, funktioniert es gut:

%Vor%

Obwohl es in beiden Fällen UTF8-Kodierung zu sein scheint, funktioniert das eine und das andere nicht?

    
user972255 07.06.2013, 22:47
quelle

1 Antwort

12

Es gibt keine Eigenschaft UTF8Encoding.Default . Wenn Sie dies schreiben, geben Sie tatsächlich die statische Eigenschaft der Basisklasse % co_de zurück % , das ist nicht UTF8 (es ist die standardmäßige ANSI-Codepagecodierung des Systems).

Als solche werden die beiden sehr unterschiedliche Ergebnisse liefern - da Encoding.Default tatsächlich UTF8Encoding.Default ist, werden Sie das gleiche Ergebnis zurückgeben, als würden Sie Encoding.Default oder eine der anderen ASCIIEncoding.Default Unterklassen verwenden.

Der richtige Weg, um System.Text.Encoding zu verwenden, ist mit einer Instanz, die Sie erstellen, zum Beispiel:

%Vor%

Das obige sollte die gleichen Ergebnisse liefern wie:

%Vor%     
Reed Copsey 07.06.2013, 22:52
quelle

Tags und Links