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

В чем смысл этого объявления кодировки?

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

0
Tuomas Viskari 23 Окт 2018 в 13:56

2 ответа

Лучший ответ

См. спецификацию XML 1.0, раздел «F Автоопределение кодировок символов (не нормативное ) " :

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

А также:

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

А также:

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

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

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

1
CodeCaster 23 Окт 2018 в 11:14

В чем смысл этого объявления кодировки?

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

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

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

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

1
Quentin 23 Окт 2018 в 11:05
52947331