2012-02-08 3 views
0

Мы анализируем xml-файл, содержащий информацию о пользователе, такую ​​как имя, возраст и т. Д. Но пользователи со всего мира нуждаются в различном наборе символов в xml. Например, есть пользователь с именем «Sikl ¢ si». Если я устанавливаю xml-кодировку UTF-8, объект C# xmldocument генерирует исключение при загрузке xml. Я изменил кодировку на iso-8859-9, теперь она работает. Но, если у нас есть еще несколько забавных символов, которые не покрываются iso-8859-9, это снова будет проблемой. Каково окончательное решение этой проблемы.Xml-кодировка для многонационального решения

ответ

-1

Сделайте это UTF-32, который будет охватывать большинство из них. Для получения дополнительной информации о UTF посетите this.

+0

Нет, он не работает. Думаю, XmlDocument не знает UTF-32. Он дает сообщение об ошибке на корневом уровне: данные на корневом уровне недопустимы. Строка 1, позиция 40 – londondev

+1

UTF-32 будет охватывать все возможные символы, которые могут вам понадобиться, но так же будут UTF-16 и UTF-8. Нет причин, по которым UTF-32 будет работать, и UTF-8 не будет. – svick

3

Конечным решением является знать, какая кодировка была использована для кодирования файла в первую очередь. XML-файл должен указать, какую кодировку он использует в декларации XML (например, <?xml charset="UTF-8" ?>). Если это не так, то документ должен быть UTF-8 или UTF-16 (и различие между ними может быть обнаружено автоматически).

Ваш анализатор XML должен обрабатывать кодирование прозрачно на основе информации в XML-файле.

Если вы получаете документы, которые не будут анализировать, то вероятность того, что проблема заключается в том, как они генерируются в первую очередь. Вы должны отклонить их и сообщить отправителю исправить кодировку.

(Обратите внимание, что любая кодировка Юникода может обрабатывать практически любой символ, который вам может понадобиться (а также огромное количество вас нет). Проблема заключается в том, что документ не UTF-8, а не UTF -8 не может обрабатывать используемые символы).

+0

На самом деле, мы генерируем xml-файлы из базы данных. Таким образом, нет информации о кодировке, которая требуется для пользователя. Я не знаю что делать. – londondev

+1

Преобразуйте все данные в базу данных в UTF-8 и убедитесь, что все, что его модифицирует, также поддерживает UTF-8. Вероятно, вам придется много ручных проверок, когда вы пытаетесь восстановиться из текущего сломанного состояния. – Quentin