Leider der gleiche Fehler
Das ist auch richtig so.
Xml.Encoding
hat garnichts mit dem Einlesen zu tun.
Da steht das Encoding drin, was
beim Auslesen der
XML genutzt wurde, bzw. welches beim Speichern verwendet wird.
Erstmal ist diese
XML nicht valide aka "ungültig", womit der Fehler völlig korrekt ist.
Es gilt das Encoding via BOM (für den ersten
XML-Node), wenn kein BOM dann UTF-8. Und gibt es eine Processing Instruction (
<?xml ...?>
), dann gilt nach ihr das darin definierte Encoding.
Als Ausnahme gelten UTF-16 LE und BE, welche auch ohne BOM am ersten
<
erkannt werden können. (#0'<' oder '<'#0)
Ohne Angabe eines Encoding sind
XML immer UTF-8, also liegt der Fehler beim schreibenden Programm, wenn es ein falsches Encoding verwendet, als es (nicht) in der
XML definiert hat.
Kann man beim LoadFromFile ein TEncoding-Parameter übergeben werden, um das Default-Encoding zu ändern?
Wenn nicht, dann mußt du die Datei selber einlesen, dabei das gewünschte TEncoding verwenden (bei normalen Textdateien ist es
ANSI, unter Windows) und dann als String via LoadXML (oder wie das hieß) laden.
> Lesen mit TStringList oder
TFile.ReadAllText