Библиотека Tiburon RTL также включает новый класс TEncoding. Его назначение - определить конкретный тип кодировки символов, чтобы можно было сообщить библиотеке VCL, какой тип кодировки необходимо использовать в конкретных ситуациях.
Например, пусть есть экземпляр TStringList, содержащий текст, который необходимо записать в файл. Ранее необходимо было бы написать begin ... MyStringList.SaveToFile("SomeFilename.txt"); ... end;
и файл записался бы, по умолчанию, в кодировке ANSI. Данный код по-прежнему хорошо работает - файл запишется им в кодировке ANSI, как и раньше, но теперь, когда в Delphi поддерживаются строковые данные в кодировке Unicode, разработчикам может потребоваться записать строковые данные в какой-либо конкретной кодировке. Поэтому оператор SaveToFile (а также LoadFromFile) теперь имеет дополнительный второй параметр, которым определяется используемая кодировка: begin ... MyStringList.SaveToFile("SomeFilename.txt", TEncoding.Unicode); ... end;
При выполнении приведенного выше кода файл будет записан как текстовый файл в кодировке Unicode (UTF-16).
Классом TEncoding будет также преобразовываться заданный набор байтов из одной кодировки в другую, извлекаться информация о байтах и/или символах в заданной строке или массиве символов, преобразовываться любая строка в массив array of byte (TBytes) и выполняться другие функции, которые могут потребоваться для конкретной кодировки заданной строки или заданного массива символов.
Класс TEncoding включает следующие свойства класса, дающие доступ к экземпляру TEncoding заданной кодировки: class property ASCII: TEncoding read GetASCII; class property BigEndianUnicode: TEncoding read GetBigEndianUnicode; class property Default: TEncoding read GetDefault; class property Unicode: TEncoding read GetUnicode; class property UTF7: TEncoding read GetUTF7; class property UTF8: TEncoding read GetUTF8;
Свойство Default ссылается на активную кодовую страницу ANSI. Свойство Unicode ссылается на UTF-16.
Класс TEncoding также включает функцию class function TEncoding.GetEncoding(CodePage: Integer): TEncoding;
которая будет возвращать экземпляр TEncoding, соответствующий кодовой странице, переданной в параметре.
Кроме того, он включает следующую функцию: function GetPreamble: TBytes;
которая будет возвращать правильный маркер порядка байтов для заданной кодировки.
Класс TEncoding также представляет собой интерфейс, совместимый с классом .Net Encoding.