Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#12

AW: XML: Text mit Umlaut in Node schreiben

  Alt 8. Aug 2022, 19:38
Das #248 ist eh falsch, da das der Ansi Code des "ö" ist, also nicht UTF-8.
Das stimmt so nicht. Die &-Codierung ist unabhängig von dem angegebenen Encoding. Das wird nur für die Interpretation der einzelnen Bytes als Zeichen verwendet. So wird in UTF-8 das "ö" durch die zwei Bytes c3 b6 dargestellt wird. Im Gegensatz dazu ist die &-Codierung unabhängig vom Encoding. Das "ö" kann also in allen Encodings als "&+#246;" (das + bitte wegdenken) angegeben werden. Nötig ist es allerdings nur bei Encodings die es nicht selbst unterstützen. Folglich kann bei UTF-8 auch direkt das "ö" verwendet werden.

Wäre der Code #246 falsch, hätten wir nicht dieses Ergebnis bekommen:
Oje. Und was stimmt nun? Beides?

Weil wenn ich das mache:

Delphi-Quellcode:

var
  XMLDoc: IXMLDocument;
  Node: IXMLNode;
  s: String;
begin
  XmlDoc:= TXmlDocument.Create(Nil);
  XmlDoc.LoadFromFile('c:xml1.xml');
// XmlDoc.LoadFromFile('c:xml2.xml');
  Node:= XmlDoc.DocumentElement.ChildNodes.FindNode('message');
  if Assigned(Node) then
    s:= Node.NodeValue;
Ist bei beiden Varianten s "'Dies ist ein Umlaut: ö.'"

Die Verwirrung kehrt zurück....

xml1.xml:
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>'
xml2.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<lpr:error xmlns:lpr="http://127.0.0.1/lpr">
<message>Dies ist ein Umlaut: & #246;.
</message>
</lpr:error>'
(ohne Leerzeichen nach dem &)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat