2012-05-02 3 views
1

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

В базе данных клиентов удалось импортировать или иным образом добавлять символьные данные из другого набора символов, таких как:

<E2><80><99> 

Я считаю, что это UTF-16.

XML-выход моего сценария выдает ошибки из-за этих данных (который вытягивает строки, такие как поле описания, из базы данных и создает XML-файл).

Ошибка XML Синтаксический: не хорошо сформированным Порядковый номер 20, столбец 50.

Там какой-то другой шестигранной это больше, как < 80> < 99> (просто пример, я не уверен, если это фактический характер).

Как я могу сделать мой файл XML действителен, и либо уменьшить размер набора символов или заставить его использовать UTF-32, как так:

AddType "application/xml; charset=UTF-32" xml (in .htaccess file along with filesmatch .xml) 


    <?xml version='1.0' encoding='UTF-32' ?> (placed in head of xml file) 
+1

'0xe2 0x80 0x99' является UTF-8 для« ПРАВИЛЬНОЙ ОДИНОЧНОЙ ЦЕЛЕВОЙ МАРКИ »(U + 2019), я думаю, ваша проблема кроется в другом месте. Не могли бы вы показать нам первые несколько строк xml? –

+0

Где вы видите эти ошибки? У вас есть пример URL-адреса? Что такое номер строки 20? Что находится в колонке 50? – hakre

+0

Вот пример: XML Синтаксический Ошибка: не хорошо сформированным Расположение: Http: //xxxx/xml/hal-default.xml Порядковый номер 20, столбец 50: \t \t \t Hangmans Creek Ranch является 190 (специальный символ прямо здесь после того, как "190") акров ранчо Глядя на это с помощью шестнадцатеричного редактора: 0001140 3931 B130 6120 7263 2065 6172 636e 2068 1 9 0 1 зр акр зр ранчо зр Проясняет ли это что-нибудь? –

ответ

0

бы это ни было: UTF-8, -16 или -32 - Если вы выберете какую-либо другую кодировку с вашим выходом, вы должны - если она отличается, - сначала перекодировать ваш вход для вывода.

В вашем вопросе четко указано, что вы точно не знаете, что такое входная кодировка. Это то, что вам нужно получить прямо, потому что кодирование является метаинформацией. Вы должны знать это правильно, чтобы обрабатывать строки. Из того, что вы поделили, похоже, что вход кодируется UTF-8. Вы должны убедиться, что (How to detect malformed utf-8 string in PHP?).

Следующее, что неверное, не должно означать проблему кодирования (но может). Пока вы не разделяете источник проблемы (в идеале рядом с текстовой формой, а также with a hex-dump), нет много советов, которые могут быть даны для текущей информации, которую я бы сказал.

+0

Вот пример: Ошибка анализа XML: неправильная форма Местоположение: http: //x.x.x.x/xml/hal-default.XML Порядковый номер 20, столбец 50: \t \t \t Hangmans Creek Ranch является 190 (специальный символ прямо здесь после того, как "190") акров ранчо Глядя на это с помощью шестнадцатеричного редактора: 0001140 3931 b130 6120 7263 2065 6172 636e 2068 1 9 0 1 sp acre sp ranch sp Проясняет ли что-нибудь? –

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