Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
12. Feb 2010
das delete(a, 1, 1) stimmt definitiv nicht, denn dieses BOM ist 3 Byte groß.
uses WideStrUtils;
ReadLn(myfile, a);
if HasUTF8BOM(a) then
begin
delete(a, 1, Length(sUTF8BOMString)); // oder eben delete(a, 1, 3);
s := UTF8toString(a);
end
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
12. Feb 2010
Wenn man sich mal bewußt ist, was diese 3 Byte wirklich bedeuten, dann kommt man gekürzt auf dieses:
ReadLn(myfile, a);
s := UTF8Decode(a);
if (s <> '') and (s = #$FEFF) then delete(s, 1, 1);
So könnte man auch noch eine Prüfung einbauen, welche die Daten gleich noch mit prüft
ReadLn(myfile, a);
s := UTF8Decode(a);
if (s = '') or (a <> '') then s := a
else if (s <> '') and (s = #$FEFF)...