Witam.
Generuję w Lazarusie plik xml.
function makeBlankXML():integer;
var
Doc: TXMLDocument; // variable to document
RootNode, parentNode, nofilho: TDOMNode; // variable to nodes
begin
try
// Create a document
Doc := TXMLDocument.Create;
Doc.Encoding := 'UTF-8';
// Create a root node
RootNode := Doc.CreateElement('script');
TDOMElement(RootNode).SetAttribute('name', 'some');
Doc.Appendchild(RootNode);
// Create a Object node
RootNode:= Doc.DocumentElement;
parentNode := Doc.CreateElement('node');
TDOMElement(parentNode).SetAttribute('name', 'ążśźćółń');
RootNode.Appendchild(parentNode);
writeXMLFile(Doc, 'default.xml');
finally
Doc.Free;
end;
end;
Problem jest tego typu, że zamiast ążśźćółń w pliku wynikowym dostaję ÄżÅźÄóÅÅ
Natomiast jeśli użyję funkcji UTF8Decode('ążśźćółń') w pliku wynikowym podglądając np. notatnikiem jest ok, ale problem nie jest do końca rozwiązany bo ten sam plik xml załadowany do innego obcego programu już nie pokazuje prawidłowych danych. Jest to chyba wina BOM, bo gdy odpaliłem xml'a w notepad++ i zapisałem cały plik jako UTF-8 without BOM, wizualnie w pliku nic sie nie zmieniło, ale już ten 'obcy' program zczytywał dane poprawnie.
Moje pytanie. Jak zapisać xml'a w kodowaniu UTF-8 without BOM z poziomu Delphi/Lazarus/Pascal?