Форум колористов и полиграфистов
https://cielab.xyz/forum/

Исправляем ошибку simplexml_load_file Input is not proper UTF-8
https://cielab.xyz/forum/viewtopic.php?f=15&t=558
Страница 1 из 1

Автор:  mihas [ 1:24, Пт, 03 ноя 2017 ]
Заголовок сообщения:  Исправляем ошибку simplexml_load_file Input is not proper UTF-8

Столкнулся с тем, что в сложном xml-файле одна программа записывала изредка не юникодные символы, например так:
CIELAB (2� observer, D50)
Где какой-то непонятный квадратик или символ в неизвестной кодировке, вместо значка градуса ° °
Мне этот значок не нужен был вообще в контексте вычислений, а функция simplexml_load_file из-за этого значка выдавала ошибку.
Решение простое - преобразовать вначале файл xml из юникода в юникод с игнорированием всех посторонних символов с помощью iconv:
$fileXML = fopen("/path/example.xml", 'r');
$textXML = fread($fileXML, filesize("/path/example.xml"));
fclose($fileXML);
$fileXML = fopen("/path/example.xml", 'w');
$textXML = iconv('utf-8', 'utf-8//IGNORE', $textXML);
fwrite($fileXML, $textXML);
fclose($fileXML);
И дальше функция simplexml_load_file начинает работать без ошибок. Замените путь /path/ к файлу на свой от корня сервера. Обращаю внимание, что "/path/example.xml" в двойных кавычках, если захочется брать имя файла из переменной, типа как: "/path/$examplexml". В двойных кавычках можно прямо так переменную в строку вписывать.

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/