Рендеринг XML-документа на нескольких языках - PullRequest
4 голосов
/ 08 апреля 2010

У меня есть страница XML с некоторыми элементами на разных языках - арабском, английском, китайском, японском. Какой формат кодирования мне следует выбрать для этого?Если я пытаюсь отобразить XML с помощью XSL (используя utf-8 или ISO-8859-6 или ISO-2022-JP), я получаю эту ошибку:

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

Как это решить или решить?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 08 апреля 2010

UTF-8 - единственная кодировка, которая может обрабатывать все эти алфавиты. Это также кодировка по умолчанию для XML и единственная кодировка, которая имеет смысл для современного приложения. (В любом случае для хранения / на-проводе; для внутренней обработки тип строки вашего языка с большей вероятностью будет UTF-16 или 32.)

Из ошибки может показаться, что у вас проблема с входным файлом, а не проблема с выбранной вами кодировкой. Может быть, он закодирован в чем-то отличном от UTF-8, но забыл включить объявление <?xml encoding?>, чтобы сказать это. Или, может быть, существует недопустимая управляющая последовательность ISO-2202-JP? (Это ужас кодировки.)

Вы должны попытаться загрузить входной файл во что-то, что анализирует XML (например, Firefox или IE) и посмотреть, какие ошибки, если таковые имеются, возникают.

(Вы не можете смешивать кодировки в одном XML-файле. Если вы выплюнули байтовые строки из разных источников в XML, вы уже потеряли. Как генерируется этот XML?)

1 голос
/ 08 апреля 2010

Где именно обнаружена ошибка?Похоже, сам XML может иметь недопустимый символ (например, управляющий символ между U + 0000 и U + 001F, отличный от \ r, \ t и \ n IIRC).Вы, вероятно, увидите это при загрузке XML в любой приличный редактор XML (или программно).

Помимо этого, UTF-8 обычно является хорошим выбором кодировки - он менее эффективен, чем UTF-16 для FarВосточные персонажи, заметьте.И UTF-16, и UTF-8 позволяют отображать все символы Unicode (используя суррогатные пары в UTF-16 для символов вне базовой многоязычной плоскости).

0 голосов
/ 08 апреля 2010

UTF-8 охватывает все символы UCS2 (на что ссылается большинство людей, когда они говорят Unicode), и как таковая должна быть уместна Вы все еще должны убедиться, что в XML нет встроенных символов, которые не должны отображаться, например < или > или непечатных символов

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