Delphi в мире Юникода


         

Класс TEncoding


Библиотека 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.



Содержание раздела