UTF-8 mit BOM hatte ich heute auch als Fehlerquelle in Delphi 2009 lokalisiert - ein
XML SAX Parser beschwerte sich darüber ("Content not allowed in prolog"), dass er bei TStringlist.SaveToFile( ..., TEncoding.UTF8) immer erzeugt wird.
Ein BOM wird bei UTF-8 nicht empfohlen:
A UTF-8 BOM is explicitly allowed by the
Unicode standard, but is not recommended
http://en.wikipedia.org/wiki/Byte-or...rk#cite_note-2
Zitat:
"The
Unicode Standard 5.0, Chapter 2:General Structure" (PDF). pp. 36.
http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf. Retrieved 2008-11-30. "Use of a BOM is neither required nor recommended for UTF-8, but may be encountered in contexts where UTF-8 data is converted from other encoding forms that use a BOM or where the BOM is used as a UTF-8 signature"
The presence of the UTF-8 BOM may cause interoperability problems with existing software that could otherwise
handle UTF-8
http://en.wikipedia.org/wiki/UTF-8#Byte-order_mark
Als Workaround habe ich im Internet (bei Expert Exchange) den Tipp entdeckt, die UTF8 Encoding Klasse abzuleiten.
Bei Verwendung von TXmlDocument.SaveToFile dagegen wird für UTF-8 kein BOM geschrieben - was (für
XML Dateien) das Problem einfach löst.
Cheers,