Forum: Sonstige Fragen zu Delphi
Delphi
by Uwe Raabe,
6. Mär 2024
Bist du sicher?
if UTF8Idents then
Output.Write(TEncoding.UTF8.GetPreamble, 3);
Output.Write(MemoryStream.Memory^, MemoryStream.Size);
Es lässt sich übrigens ganz leicht verifizieren indem man einer Komponente einen Umlaut-behafteten Namen gibt.
Beim Schreiben von String-Werten wird WriteUTF8Str gar nicht verwendet. Siehe ObjectBinaryToText -> ConvertValue -> case...
Forum: Sonstige Fragen zu Delphi
Delphi
by Uwe Raabe,
6. Mär 2024
Das kann aber eigentlich nur dann passieren, wenn irgendwo Identifier mit Umlauten vorkommen. Der relevante Code sieht so aus:
procedure WriteUTF8Str(const S: string);
var
Ident: TBytes; // UTF8String;
begin
Ident := TEncoding.UTF8.GetBytes(S);
if not UTF8Idents and (Length(Ident) > S.Length) then
UTF8Idents := True;
Forum: Sonstige Fragen zu Delphi
Delphi
by Uwe Raabe,
6. Mär 2024
Das ist ja schon seit Ewigkeiten so. Es wird aber niemals das Encoding geändert. (Käme mal auf einen Versuch an, Komponentennamen mit Umlauten zu verwenden...)