Werfen Sie einen Blick auf die TStrings.DefaultEncoding
Eigenschaft.
Die Standardcodierung für das aktuelle Objekt.
defaulten verwendet, wenn die Null-Codierung in einem Aufruf von LoadFromStream
oder SaveToStream
angegeben ist.
Standardmäßig ist DefaultEncoding auf Default
eingestellt. Der Benutzer kann DefaultEncoding ändern, wenn eine andere Standardcodierung für LoadFromStream
oder SaveToStream
gewünscht wird.
aber achten Sie auf die TStrings.Encoding
Eigenschaft:
Zeichenkodierung beim Lesen aus einem Stream oder eine Datei bestimmt.
Encoding
ist eine schreibgeschützte Eigenschaft, die den Wert der Zeichencodierung enthält, die beim Aufruf der Methoden LoadFromStream
oder LoadFromFile
erkannt wird. Wenn eine Datei oder ein Stream keine Stückliste enthält (der Codierungswert kann nicht erkannt werden), wird Encoding
auf den in der Eigenschaft DefaultEncoding
angegebenen Wert gesetzt.
Encoding
ist in den SaveToStream
SaveToFile
und Methoden verwendet.
Wenn der Encoding
Parameter [von LoadFromStream
] nicht gegeben ist, dann werden die Zeichenketten unter Verwendung der entsprechenden Codierung geladen. Der Wert der Codierung wird durch Aufrufen der GetBufferEncoding
-Routine der TEncoding
-Klasse erhalten. LoadFromStream
speichert dann den Wert der Codierung in der Eigenschaft Encoding
, die verwendet werden soll, wenn der Stream gespeichert wird.
Also, solange Sie nicht LoadFrom...()
nennen, können Sie DefaultEncoding
-TEncoding.Unicode
gesetzt und dann SaveTo...()
aufrufen, ohne einen Wert für den Encoding
Parameter angeben.
Aber, sobald Sie LoadFrom...()
nennen, nimmt das Encoding
Eigentum Vorrang vor der DefaultEncoding
Eigenschaft für nachfolgende Aufrufe von SaveTo...()
.Solange die Dateien nicht mit der BOM versehen sind, entspricht die Eigenschaft Encoding
der Eigenschaft DefaultEncoding
. Wenn jedoch eine Nicht-UTF16LE-BOM gefunden wird, sind alle Wetten deaktiviert.
TEncoding.Unicode
Um sicherzustellen, dass immer dann verwendet wird, sollten Sie die Encoding
Parameter von LoadFrom...()
und SaveTo...()
weiter zu verwenden, das ist, warum sie existieren. Sie haben die erste Priorität, die (Default)Encoding
Eigenschaften sind Rückschläge, wenn Eingabe/Ausgabe-Kodierungen nicht explizit angegeben sind.