Какой смысл декларации кодировки XML? - PullRequest
0 голосов
/ 23 октября 2018

<?xml version="1.0" encoding="ISO-8859-1"?>

Какой смысл в этом объявлении кодировки?

Это объявление является частью содержимого потока, который я получаю.Чтобы иметь возможность надежно читать поток, мне нужно знать кодировку перед доступом к контенту.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

См. Спецификация XML 1.0 , раздел «F Автоматическое обнаружение кодировок символов (ненормативный раздел»):

Объявление кодирования XML функционирует как внутренняя метка для каждого объектауказывает, какая кодировка символов используется.Однако прежде чем XML-процессор сможет прочитать внутреннюю метку, он, очевидно, должен знать, какая кодировка символов используется - именно это пытается указать внутренняя метка.В общем случае это безнадежная ситуация.Однако в XML это не совсем безнадежно, поскольку XML ограничивает общий случай двумя способами: предполагается, что каждая реализация поддерживает только конечный набор кодировок символов, а объявление кодировки XML ограничено по позиции и содержанию чтобы сделать возможным автоматическое определение кодировки символов, используемой в каждом объекте в обычных случаях.

И:

Поскольку каждый объект XML не сопровождается внешним кодированиеминформация, а не в кодировке UTF-8 или UTF-16, должна начинаться с объявления кодировки XML, в котором первые символы должны быть <?xml, любой соответствующий процессор может обнаружить после двух-четырех октетов ввода, что в следующих случаяхapply.

And:

Поскольку содержимое объявления кодировки ограничено символами из репертуара ASCII (как бы он ни был закодирован), процессор может надежно прочитать всю кодировкудекларация, как только он обнаружил, какое семейство кодировокиспользуется.

Итак, какое бы кодирование ни использовалось, совместимый синтаксический анализатор должен иметь возможность автоматически определять кодировку, используемую для документа, и анализировать фактическое значение атрибута «кодировка».

После прочтения парсеру, возможно, придется сбросить поток и использовать другое средство чтения, чтобы правильно прочитать весь документ.

0 голосов
/ 23 октября 2018

Какой смысл в этом объявлении кодировки?

Таким образом, вы можете указать, используете ли вы кодировку не по умолчанию.

(Почему кто-то использует ISO-8859 на этой стороне 2000 года?!)

Эта декларация является частью содержимого потока, который я получаю.Чтобы иметь возможность надежно читать поток, мне нужно знать кодировку перед доступом к содержимому.

В декларации XML используются только символы ASCII, поэтому ее можно проанализировать без определения кодировки символов..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...