Jetez un coup d'œil à la propriété TStrings.DefaultEncoding
.
L'encodage par défaut de l'objet actuel.
defaultEncoding est utilisé lorsque le codage zéro est spécifié dans un appel à LoadFromStream
ou SaveToStream
.
Par défaut, DefaultEncoding est défini sur Default
. L'utilisateur peut modifier DefaultEncoding si un autre codage par défaut est souhaité pour LoadFromStream
ou SaveToStream
.
Cependant, attention à la propriété TStrings.Encoding
:
Le codage des caractères déterminé lors de la lecture d'un flux ou un fichier.
Encoding
est une propriété en lecture seule qui contient la valeur du codage de caractères détecté lorsque les méthodes LoadFromStream
ou LoadFromFile
sont appelées. Si un fichier ou un flux ne contient pas de nomenclature (la valeur de codage ne peut pas être détectée), Encoding
est défini sur la valeur spécifiée dans la propriété DefaultEncoding
.
Encoding
est utilisé dans les méthodes SaveToStream
et SaveToFile
.
Si le paramètre Encoding
[de LoadFromStream
] n'est pas donné, alors les chaînes sont chargées en utilisant le codage approprié. La valeur du codage est obtenue en appelant la routine GetBufferEncoding
de la classe TEncoding
. LoadFromStream
enregistre ensuite la valeur de l'encodage dans la propriété Encoding
, à utiliser si le flux est enregistré.
Donc, tant que vous n'appelez LoadFrom...()
, vous pouvez définir DefaultEncoding
-TEncoding.Unicode
puis appeler SaveTo...()
sans spécifier une valeur pour le paramètre Encoding
. Mais, une fois que vous appelez LoadFrom...()
, la propriété Encoding
est prioritaire sur la propriété DefaultEncoding
pour les appels suivants SaveTo...()
.Tant que les fichiers ne sont pas BOM'ed, la propriété Encoding
correspondra à la propriété DefaultEncoding
. Mais si une nomenclature non-UTF16LE est rencontrée, tous les paris sont désactivés.
Pour assurer TEncoding.Unicode
est toujours utilisé, vous devez continuer à utiliser le paramètre Encoding
de LoadFrom...()
et SaveTo...()
, c'est pourquoi ils existent. Ils prennent la première priorité, les propriétés (Default)Encoding
sont des solutions de repli lorsque les encodages d'entrée/sortie ne sont pas explicitement indiqués.