Посмотрите на TStrings.DefaultEncoding
.
Кодировка по умолчанию для текущего объекта.
DefaultEncoding используется, когда ноль кодирования задан в вызове LoadFromStream
или SaveToStream
.
По умолчанию По умолчаниюEncoding установлен в Default
. Пользователь может изменить DefaultEncoding, если требуется другое кодирование по умолчанию для LoadFromStream
или SaveToStream
.
Однако, следить за TStrings.Encoding
собственности: кодирование
символов определяется во время чтения из потока или файла.
Encoding
- это свойство только для чтения, которое содержит значение кодировки символов, обнаруженное при вызове методов LoadFromStream
или LoadFromFile
. Если файл или поток не содержит спецификацию (значение кодировки не может быть обнаружено), то Encoding
устанавливается в значение, указанное в свойстве DefaultEncoding
.
Encoding
используется в SaveToStream
и SaveToFile
методов.
Если параметр [из LoadFromStream
] Encoding
не задан, то строки загружаются с использованием соответствующего кодирования. Значение кодирования получается путем вызова подпрограммы GetBufferEncoding
класса TEncoding
. LoadFromStream
затем сохраняет значение кодировки в свойстве Encoding
, которое будет использоваться, если поток сохранен.
Таким образом, до тех пор, пока вы не звоните LoadFrom...()
, вы можете установить DefaultEncoding
в TEncoding.Unicode
, а затем вызвать SaveTo...()
без указания значения для параметра Encoding
.
Но после того, как вы позвоните LoadFrom...()
, свойство Encoding
имеет приоритет над свойством DefaultEncoding
для последующих звонков SaveTo...()
.Пока файлы не BOM'ed, свойство Encoding
будет соответствовать свойству DefaultEncoding
. Но если встречается не-UTF16LE BOM, все ставки отключены.
Для обеспечения TEncoding.Unicode
всегда используется, вы должны продолжать использовать параметр LoadFrom...()
и SaveTo...()
Encoding
, поэтому они существуют. Они принимают первый приоритет, свойства (Default)Encoding
являются резервными, когда кодировки ввода/вывода явно не указаны.