У меня есть XML со специальными символами, закодированными как &#XXX; в этом. До тех пор, пока я выводил бы эти символы в браузер, это работало бы нормально, поскольку они являются HTML-кодировками (вроде).
Но мне нужно прочитать XML-файл с simplexml_load_string
, что приводит к мусору для определенных символов, потому что они находятся в расширенной ASCII-таблице.
Например:
š
переводится как š — но когда я пытаюсь использовать html_entity_decode, я получаю пустой символ.
Я попробовал почти все из iconv
в mb_decode_numericentity
— ничего не получалось.
Как мне конвертировать эти &#XXX; реальным персонажам ???
[Редактировать] Я нашел эту таблицу http://www.ascii-code.com что требуетš
является расширенным символом ASCII с использованием ISO-8859-1Вы, очевидно, имеете дело с двумя разными персонажами, которые при печати выглядят почти одинаково:
š
š
соответствует «ВВЕДИТЕЛЬ ОДНОГО ХАРАКТЕРА» (U + 009A)Я обнаружил, что ни один из моих шрифтов или текстовых редакторов не обрабатывает второй правильно. Таким образом, вы, скорее всего, получите пустой символ именно по этой причине.
Второй, кажется, какой-то странный управляющий персонаж чья точная цель ускользает от моего понимания:
За ним должен следовать один печатный символ (от 0x20 до 0x7E) или
эффектор формата (от 0x08 до 0x0D). Намерение было предоставить средства
с помощью которого управляющая функция или графический символ, который будет
доступны независимо от того, какие графические или контрольные наборы использовались
может быть определено. Определения того, что будет вызывать следующий байт
никогда не был реализован в международном стандарте. Не является частью
первое издание ISO / IEC 6429
Стоит отметить, что ссылки на символы в XML использовать числовые коды из фиксированной кодировки (некоторые варианты UCS). Если автор файла XML не следует этому соглашению, вы столкнетесь либо с недопустимым XML (что-то, что эффективно предотвращает его анализ с библиотекой XML), либо с допустимым XML-файлом, который содержит поврежденные данные (что, по большей части, потребует утомительной постобработки).
Других решений пока нет …