Ошибка синтаксического анализа XML: неопределенная сущность - специальные символы
Почему XML отображает ошибку на некоторых специальных символах, а некоторые из них в порядке?
например, ниже будет создана ошибка,
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<Name>Löic</Name>
</Customer>
</Customers>
но это хорошо,
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<Name>&</Name>
</Customer>
</Customers>
Я конвертирую специальный символ через php -htmlentities('Löic',ENT_QUOTES)
кстати.
как я могу обойти это?
спасибо.
EDIT:
я обнаружил, что он отлично работает, если я использую числовой символ, такой как Lóic
теперь Я должен найти, как использовать php для преобразования специальных символов в числовые символы!
2 ответов
в спецификации XML определены пять сущностей -&
, <
, >
, '
и "
здесь множество сущностей, определенных в HTML DTD.
вы не можете использовать те из HTML В общем XML.
вы можете использовать числовые ссылки, но вам, вероятно, будет лучше просто получить свой кодировки символов прямо (что в основном сводится к:
- установить ваш редактор!--9--> сохранить данные в UTF-8
- если вы обрабатываете данные с помощью языка программирования, убедитесь, что это UTF-8 aware
- если вы храните данные в базе данных, убедитесь, что она настроена для UTF-8
- когда вы обслуживаете свой документ, убедитесь, что заголовки HTTP указывают, что это UTF-8 (в случае XML UTF-8 по умолчанию, поэтому не указывать ничего почти так же хорошо)
)
поскольку это не встроенный объект, это вместо внешнего объекта, который нуждается в объявлении в DTD.