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?
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%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.