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