∈ не является символом, который может быть представлен в ISO 8859-1, измените ваш XML, чтобы сказать, что он закодирован с помощью UTF-8.
Чтобы привести пример, демонстрирующий проблему.
$x = simplexml_load_string('<?xml version="1.0" encoding="iso-8859-1"?>
<example><math>∈</math></example>');
echo $x->math, PHP_EOL;
$x = simplexml_load_string('<?xml version="1.0" encoding="utf-8"?>
<example><math>∈</math></example>');
echo $x->math, PHP_EOL;
Выводы (как UTF-8) следующие.
â
∈
SimpleXML попытается преобразоватьв UTF-8, когда encoding
установлен на что-то другое.Это всегда хорошая идея - не выполнять эту работу, когда вход уже закодирован в формате UTF-8, а объявление encoding
неверно.
Также убедитесь, что сам PHP выводит UTF-8, и сказать браузеру, что это так!
Вы можете сделать это, установив опцию default_charset
INI (в вашем php.ini или с помощью ini_set()
), или отправив правильный Content-Type
заголовок (header('Content-Type: text/html; charset=utf-8')
).