UTF8String

На верх  Назад  Вперёд

Однобайтовые строки могут хранить только набор символов, доступных в этой кодовой страницы. Символы, которые нет в кодовой странице, не могут быть в этой строке. Unicode кодировка UTF-8 является кодировкой, которая может быть использована с однобайтными строками: Таблица ASCII-символов (128 разрядная таблица) в этой кодировке строго CP_ACP. Этот факт используется для пере определения одного байта строки,  содержащей все символы:

Type

UTF8String = type AnsiString(CP_UTF8);

Строка типа UTF8String может использоваться для представления всех символов Unicode. Это возможно! Так как для символа юникода (unicode) может потребоваться несколько байтов, которые будут представлены в кодировке UTF-8, однако есть два замечания, которые надо учитывать при использовании UTF8String:

1.Осторожно нужно пользоваться индексом символа - т.к размер символа (в общем случае) неравен 1 байт, то индекс символа и номер байта - не одно и то-же: то есть выражение S[i] не всегда указывает на допустимым символом в строке S (типа UTF8String).

2.Количество байт в строке не равно числу символов в строке. Стандартная функция length не может быть использована для получения длины символа, она всегда будет возвращать длину 1 байт.

Для всех (остальных) кодовых страниц, количество однобайтных символов в строке равна длине байт строки.