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?
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:
Das obige sollte die gleichen Ergebnisse liefern wie:
%Vor%Tags und Links c# character-encoding utf-8