Кодировка XML

Рубрика: Язык разметки XML

Здравствуйте, уважаемые посетители сайта okITgo.ru! Продолжаем рассматривать язык разметки XML.

XML документы могут содержать символы, не входящие в ASCII, например норвежские, или французские.

Чтобы избежать ошибок, указывайте кодировку XML, или сохраняйте XML файлы в формате Уникод.


Ошибки Кодировки XML

При загрузке XML документа, Вы можете получить две различные ошибки, указывающие на проблемы с кодировкой:

Неправильный символ был найден в текстовом содержимом.

Вы получаете эту ошибку, если ваш XML содержит символы, не входящие в ASCII, и файл был сохранен как однобайтовый ANSI (или ASCII) без указания кодировки.

Однобайтовый XML файл с атрибутом кодировки.

Тот же однобайтовый XML файл без атрибута кодировки.

Переключение из текущей кодировки в указанную кодировку не поддерживается.

Вы получаете эту ошибку, если ваш XML файл был сохранен как двухбайтовый Уникод (или UTF-16) с указанной однобайтовой кодировкой (например, Windows-1251,
ISO-8859-1, UTF-8).

Вы также получаете эту ошибку, если ваш XML файл был сохранен как однобайтовый ANSI (или ASCII) с указанной двухбайтовой кодировкой (например, UTF-16).

Двухбайтовый XML файл без кодировки.

Тот же двухбайтовый XML файл с однобайтовой кодировкой.


Блокнот Windows

Блокнот Windows сохраняет файлы как однобайтовые ANSI (ASCII) по умолчанию.

Если Вы выберите "Сохранить как…", Вы можете указать двухбайтовый Уникод (UTF-16).

Сохраните XML файл ниже как Уникод (заметьте, что документ не содержит атрибута кодировки):

<?xml version="1.0"?>
<note>
<from>Света</from>
<to>Вася</to>
<message>Позвони мне завтра!</message>
</note>

Файл выше, note_encode_none_u.xml НЕ будет генерировать ошибку. Но если Вы укажете однобайтовую кодировку, то будет.

Кодировка (откройте файл), вызовет сообщение об ошибке:

<?xml version="1.0" encoding="windows-1251"?>

Следующая кодировка (откройте файл), вызовет сообщение об ошибке:

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

Следующая кодировка (откройте файл), вызовет сообщение об ошибке:

<?xml version="1.0" encoding="UTF-8"?>

Следующая кодировка (откройте файл), НЕ будет генерировать ошибку:

<?xml version="1.0" encoding="UTF-16"?>


Выводы

  • Всегда используйте атрибут кодировки XML
  • Используйте редактор, который поддерживает кодировки
  • Удостоверьтесь, что знаете, какую кодировку использует ваш редактор
  • Используйте ту же самую кодировку в атрибуте кодировки

Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.

Один отзыв на «Кодировка XML»

  1. ruevt пишет:

    Существует стандарт, который устанавливает набор базовых правил XML кодирования (XER), которые могут быть использованы для получения синтаксиса перехода для значений типов, определенных в ИСО/МЭК 8824-1 и ИСО/МЭК 8824-2. Это ГОСТ Р ИСО/МЭК 8825-4-2006 Информационная технология. Правила кодирования АСН.1. Часть 4. Правила XML кодирования (XER) – http://rfgost.ru/gost/319341/