Base64 - это способ кодирования 8-битных двоичных данных с использованием 7-битных/US-ASCII-символов. После декодирования Base64 вы должны иметь стандартный XML-файл. Возможно, этот XML-файл содержит недопустимые символы или неправильно указывает кодировку символов, которую он использует.
Вы упомянули À
, представление (& lt; XML) & Agrave; Если XML содержит строку с кодировкой HTML À
, также должна быть ссылка в XML на таблицу сущностей, определяющую, как декодировать эту строку.
В качестве альтернативы, если ваш XML содержит & Agrave; символ, закодированный с использованием (например) набора символов ISO-8859-1, либо ваш XML должен указывать эту кодировку (<?xml version="1.0" encoding="ISO-8859-1"?>
), либо вы должны указать ее самостоятельно при ее расшифровке. В противном случае парсер может принять (например, кодирование UTF-8) и не будет работать при попытке декодирования & Agrave ;.
Точное сообщение об ошибке должно сообщить вам, в чем проблема.
[обновление: & Agrave; direct]: Похоже, что XML недействителен; что они говорят UTF-8, но на самом деле используют другую кодировку. Проверьте байты XML (после декодирования базы 64); если & Agrave; закодирован как один байт, это определенно не UTF-8.
[обновление: как исправить?] Если они неправильно указали его в заголовке XML, они должны действительно заменить неверный заголовок (<?xml version="1.0" encoding="UTF-8"?>
) на правильный (<?xml version="1.0" encoding="windows-1252"?>
). Если они ничего не указывают, похоже, что функция iconv может быть вашим лучшим выбором. Мне это действительно не нужно, поэтому я не уверен на 100%, но похоже, что вы можете использовать: $ data = iconv («ISO-8859-1», «UTF-8», $ data) после base64_decode и до simplexml_load_string. Я не знаю, как указать кодировку непосредственно при декодировании XML.
Я не очень опытный с PHP особенностей кодирования символов, поэтому я не даю никаких гарантий ...
Вам необходимо предоставить больше информации, как синтаксический анализатор файлов, какие сообщения об ошибке вы получаете, и т.д. –
Проблема, очевидно, в парсере ... какой инструмент вы используете? – Spechal
Кодировка символов XML - UTF-8. Это то, что я делаю, чтобы разобрать xml. – user471317