.Net XmlWriter - unerwartete Codierung verwirrt mich

8

Die Umgebung ist VS2008, .Net 3.5

Der folgende C # -Code (beachten Sie die angegebene Kodierung von UTF8)

%Vor%

Erzeugt tatsächlich das XML (& lt; weggelassen, da SO-Barfs auf ihnen sind):

? xml version="1.0" encoding="utf-16"?
CCHEADER ProtocolVersion="1.0.0" ServerCapabilities="0x0000000F" /

Warum bekomme ich die falsche Kodierung, die hier erzeugt wird? Was mache ich falsch?

    
Bob Moore 16.12.2008, 16:58
quelle

2 Antworten

15

Ich vermute, dass es daran liegt, dass es in einen StringBuilder schreibt, der von Natur aus UTF-16 ist. Eine Alternative, um dies zu umgehen, ist eine Klasse zu erstellen, die von StringWriter abgeleitet ist, aber die Encoding-Eigenschaft außer Kraft setzt.

Ich glaube, ich habe eins in MiscUtil - aber es ist sowieso ziemlich trivial, es zu schreiben. Etwas wie das:

%Vor%     
Jon Skeet 16.12.2008, 17:02
quelle
2

Eine .Net-Zeichenfolge ist in Unicode (UTF-16) codiert. Ich erwarte, dass dies die Ursache für Ihre Codierungsprobleme ist, weil Sie in einen StringBuilder schreiben.

    
Steven Behnke 16.12.2008 17:03
quelle

Tags und Links