Расширяемый язык разметки



         

F.1 Определение без внешней информации о кодировке


Поскольку ни одна из сущностей XML не сопровождается внешней информацией о кодировке и не пользуется кодировками UTF-8 или UTF-16, то первой должна идти декларация кодировки XML. Первыми ее символами должны быть '<?xml', которые способен обнаружить любой процессор, отвечающий требованиям спецификации. Для этого ему необходимо получит от двух до четырех октетов, различные комбинации которых рассматриваются ниже. Изучая перечень этих комбинаций, полезно будет знать, что в кодировке UCS-4 код символа '<' - "#x0000003C", символ '?' соответствует "#x0000003F", а Byte Order Mark, который обязателен для потоков данных в кодировке UTF-16, имеет код "#xFEFF". Запись ## обычно используется для обозначения любого байтового значения, за исключением того, что две следующих друг за другом нотации ## не могут обе соответствовать нулевому коду 00.

с Byte Order Mark:

00 00 FE FF UCS-4, big-endian машина (1234 порядок)
FF FE 00 00 UCS-4, little-endian машина (4321 порядок)
00 00 FF FE UCS-4, необычный порядок октетов (2143)
FE FF 00 00 UCS-4, необычный порядок октетов (3412)
FE FF ## ## UTF-16, big-endian
FF FE ## ## UTF-16, little-endian
EF BB BF UTF-8

без Byte Order Mark:

0000 00 3C UCS-4 или иная кодировка с 32-битным кодом, а также ASCII символы, кодированные как ASCII значения, с порядком следования байтов big-endian (1234), little-endian (4321) и нетипичными (2143 и 3412) соответственно. Чтобы определить, какая из поддерживаемых UCS-4 и других 32-битных кодировок используется, необходимо прочесть декларацию кодировки.
3C 00 00 00
00 00 3C 00
00 3C 00 00
00 3C 00 3F UTF-16BE, big-endian ISO-10646-UCS-2 либо иная кодировка с 16-битным кодом и порядком следования big-endian, а также ASCII символы, кодированные как ASCII значения (для их идентификации необходимо прочесть декларацию кодировки)
3C 00 3F 00 UTF-16LE, little-endian ISO-10646-UCS-2, либо иная кодировка с 16-битным кодом и порядком следования little-endian, а также ASCII символы, кодированные как ASCII значения (для их идентификации необходимо прочесть декларацию кодировки)
3C 3F 78 6D UTF-8, ISO 646, ASCII, некоторое подмножество ISO 8859, Shift-JIS, EUC, или же любая другая 7-ми и 8-ми битная кодировка, кодировка переменной длины, которая гарантирует, что ASCII символы будут занимать свои нормальные позиции, иметь обычную ширину и значения. Чтобы определить, которая из этих кодировок находится в работе, необходимо прочесть действительную декларацию кодировки. Поскольку во всех перечисленных кодировках для требуемых ASCII символов используются одни и те же битовые шаблоны, то соответствующую декларацию кодировки можно прочесть всегда.
4C 6F A7 94 EBCDIC (С некоторыми особенностями. Чтобы выяснить, которая из кодовых страниц была задействована, необходимо прочесть полную декларацию кодировки.)
остальное UTF-8 без декларации кодировки, или неверный заголовок потока данных (отсутствие необходимой декларации кодировки), искажение, фрагментарность или результат обработки каким-либо архиватором
<


Содержание  Назад  Вперед