Bitte um Entschuldigung für die möglicherweise triviale Frage. Auch die Suche hier hat viele
XML Ergebnisse geliefert aber nicht offensichtlich für mein Problem.
Ganz einfach:
Delphi-Quellcode:
var
XMLDoc: IXMLDocument;
RootNode, ErrNode: IXMLNode;
sXml: UTF8String;
begin
CoInitialize(Nil);
Try
XmlDoc:= NewXmlDocument;
XmlDoc.Options:= [doNodeAutoIndent];
XmlDoc.Active:= True;
RootNode:= XMLDoc.AddChild('lpr:error', Format('http://%s/lpr',['127.0.0.1']));
ErrNode:= XmlDoc.CreateElement('message','');
ErrNode.NodeValue:= 'Dies ist ein Umlaut: ö.';
RootNode.ChildNodes.Add(ErrNode);
XMLDoc.Encoding:= 'utf-8';
XmlDoc.SaveToXML(sXml);
Finally
CoUninitialize;
End;
In sXml würde ich jetzt erwarten:
Code:
<?
xml version="1.0" encoding="utf-8"?>
<lpr:error xmlns:lpr="http://127.0.0.1/lpr">
<message>Dies ist ein Umlaut: ö.
</message>
</lpr:error>'
drin ist aber
Code:
<?
xml version="1.0" encoding="utf-8"?>
<lpr:error xmlns:lpr="http://127.0.0.1/lpr">
<message>Dies ist ein Umlaut: ö.
</message>
</lpr:error>'
Was ein ungültiges
XML bedeuted. Ich habe bisher nur haufenweise
XML gelesen oder ohne Umlaute geschrieben.
Irgendwo habe ich noch das gefunden:
sXml:= TEncoding.UTF8.GetString(TEncoding.ANSI.GetBytes(string(XmlDoc.Xml.Text)));
Das wirft aber den Fehler: ---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt test.exe ist eine
Exception der Klasse EEncodingError mit der Meldung 'Keine Zuordnung für
Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden' aufgetreten.
Wo ist mein Denkfehler?
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.