2010-10-19 2 views
4

Каковы допустимые строки кодировки xml? Например, что это способ задания UTF-8:Настройка кодировки в файлах XML

  • encoding="utf8"
  • encoding="utf8"
  • и т.д.

Или для Windows 1251:

  • encoding="windows-1251"
  • encoding="windows1251"
  • encoding="cp-1251"
  • т.д.

Я делаю декодер символов, а также XML-анализатор. Таким образом, мне нужно иметь возможность установить кодировку моего StreamReader на основе значения из атрибута кодирования.

Любые идеи, где я мог бы найти список официальной строки кодировки?

Лучшее, что я мог найти, это this, но это похоже на IE.

Спасибо!

+0

Я был бы очень интересно узнать, почему вы пишете свой собственный XML-анализатор. По какой причине вы не используете существующий парсер? – sleske

ответ

6

Если все не удается, прочитайте спецификацию :-).

4.3.3 Кодировка символов в Entities

Каждый внешний разбираемый экземпляр в XML-документе может использовать другую кодировку для своих персонажей.

[...]

В декларации кодирования, значения "UTF-8", "UTF-16", " ISO-10646-UCS-2", и " ISO-10646 -UCS-4 "ДОЛЖНЫ использоваться для различных кодировок и преобразованиями Unicode/ISO/IEC 10646, значениями« ISO-8859-1 »,« ISO-8859-2 », ...« ISO- 8859-n « (где n - номер детали) ДОЛЖЕН быть , используемый для частей ISO 8859 и значения« ISO-2022-JP »,« Shift_JIS »и« EUC-JP »СЛЕДУЕТ используется для различных кодированных форм JIS X-0208-1997.

РЕКОМЕНДУЕТСЯ , что кодировка символов зарегистрирована (как кодировки) с Интернетом Assigned Numbers Authority IANA-CHARSETS, кроме тех, которые только в списке, упоминаться с использованием их зарегистрированных имен; другие кодировки СЛЕДУЕТ использовать имена, начинающиеся с префикса «x-» .

Источник: http://www.w3.org/TR/REC-xml/

Так UTF-8 записывается как encoding="UTF-8".

Для других наборов символов, не указанных выше, используйте имена, указанные в поле IANA character set list.

Случай с буквами в названии набора символов не имеет значения: «Однако при использовании букв верхнего и нижнего регистра не производится никакого различия ». (Список наборов символов IANA). Поэтому вы также можете написать encoding="uTf-8", если вам это нравится ;-).

BTW: Вы действительно, действительно Вы хотите написать собственный XML-парсер? Это звучит подозрительно, как изобретать колесо.

+2

+1 для 'read the spec', -1 для 'if all fail' (это должен быть первый порт захода при написании синтаксического анализатора, а не последний) и +1 для повторного создания колеса;) – Quentin

+0

@ Дэвид Дорвард Спасибо :-). Честно говоря, в целом я бы не рекомендовал спецификацию как первый порт вызова новичку, многие спецификации могут быть довольно сложными. Но спецификация - это место, куда вы не можете найти ответ в учебнике (или если вы хотите быть уверенным, что правильно). В любом случае, вы, вероятно, заметили смайлик рядом с «если все не удается». – sleske

+0

Смайлик рядом с * прочитал спецификацию * :) Серьезно, однако, вопрос предполагает, что цель состоит в том, чтобы написать общий синтаксический анализатор, поэтому он должен охватывать все, что он может анализировать, и это действительно * действительно нуждается в спецификации, он излагает требования в технических терминах. Я был бы очень удивлен, если бы кто-нибудь написал документацию, которая предоставила достаточную информацию для написания парсера, который был нацелен на новичков. – Quentin

2
<?xml version="1.0" encoding="utf-8"?> 

должно быть хорошо для utf-8.

+0

+1 Почему downvote? Это верно. – sleske

0

Используйте команду локаль -A для просмотра всех кодировок: http://dwbitechguru.blogspot.ca/2014/07/check-foreign-characters-support-on.html

Вариант А: Чтобы добавить кодирование с помощью следующих тегов:

Вы можете изменить атрибут кодировки в ОТД с помощью XML-шпион.

Ссылки по теме: http://dwbitechguru.blogspot.ca/2014/07/issue-xml-reader-error.html

+0

Поместите еще несколько пробелов перед вашим XML, чтобы правильно его отформатировать. – DanM7

Смежные вопросы