Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

Re: UTF8-kodierte Datei (OHNE BOM!) korrekt in Memo laden?

  Alt 16. Nov 2009, 18:11
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,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat