So geben Sie xml als UTF-8 anstelle von UTF-16 zurück

9

Ich verwende eine Routine, die <T> serialisiert. Es funktioniert, aber beim Herunterladen in den Browser sehe ich eine leere Seite. Ich kann die Seitenquelle anzeigen oder öffnen Sie den Download in einem Texteditor und ich sehe die XML, aber es ist in UTF-16, die ich denke, warum Browser-Seiten leer zeigen?

Wie ändere ich meine Serializer-Routine, um UTF-8 anstelle von UTF-16 zurückzugeben?

Die zurückgegebene XML-Quelle:

%Vor%

Ein Beispiel für den Aufruf des Serialisierers:

%Vor%

Der Serializer:

%Vor%     
rwkiii 08.09.2014, 18:30
quelle

2 Antworten

4

Kodierung der Antwort

Ich bin mit diesem Teil des Rahmens nicht ganz vertraut. Aber nach dem MSDN können Sie die Inhaltscodierung festlegen einer HttpResponse so:

%Vor%

Encoding wie vom XmlSerializer gesehen

Nach dem Lesen Ihrer Frage sehe ich, dass dies der schwierige Teil ist. Das Problem liegt in der Verwendung von StringWriter . Da .NET-Zeichenfolgen immer als UTF-16 gespeichert sind (Zitat erforderlich ^^), gibt StringWriter dies als Kodierung zurück. Daher schreibt% code_de die XML-Deklaration als

%Vor%

Um das zu umgehen, können Sie in einen MemoryStream wie folgt schreiben:

%Vor%

Andere Ansätze

Noch ein Schnitt: Ich habe gerade diese SO-Antwort festgestellt, die von jtm001 verlinkt wurde. Die Lösung besteht darin, das XmlSerializer mit einem benutzerdefinierten XmlSerializer bereitzustellen, das für die Verwendung von UTF8 als Codierung konfiguriert ist.

Athari schlägt vor, von XmlWriter abzuleiten und die Kodierung als UTF8 anzukündigen.

Nach meinem Verständnis sollten beide Lösungen auch funktionieren. Ich denke, der Weg hier ist, dass Sie eine Art von Code oder eine andere Art von Code benötigen ...

    
NobodysNightmare 08.09.2014, 19:36
quelle
17

Sie können einen StringWriter verwenden, der UTF8 erzwingt. Hier ist eine Möglichkeit, es zu tun:

%Vor%

und verwenden Sie dann den Writer Utf8StringWriter in Ihrem Code.

%Vor%

answer ist inspiriert von Serialisieren eines Objekts als UTF-8 XML in .NET

    
Yishai Galatzer 08.09.2014 19:46
quelle

Tags und Links