Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Muss eine "leere" Datei ein BOM enthalten?

  Alt 30. Mai 2017, 18:05
Dumme Frage wahrscheinlich. Angenommen wir haben ein leere Text-Datei. Ganz leer, null Byte. .NET gibt für System.IO.File.ReadAllText(path, Encoding.Unicode); einen leeren String zurück, Delphi fliegt bei TFile.ReadAllText(filePath, TEncoding.Unicode); mit einer EEncodingError -Exception "Invalid source array" raus.

Technisch ist das wenig verwunderlich, denn die Delphi-Implementation versucht als erstes direkt den zwei Byte langen BOM aus dem Stream zu lesen der null Byte Inhalt hat und scheitert daran.

Meine Frage: Ist das korrekt so? Wenn vereinbart ist "Unicode", dann kann ich die zwei BOM-Bytes auch zwingend erwarten? Wenn sie fehlen ist es keine valide Datei?
  Mit Zitat antworten Zitat