Если бы Вы надеетесь выбираться наружу, и работающий над UML, не имея необходимость изучать сложный новый инструмент я проверил бы Фиолетовый UML. Я привык его для некоторого довольно большого успеха в прошлом.
Сегодня у меня было свободное время, и я с нуля написал декодер: entity.c , entity.h .
Единственная функция с внешняя связь
size_t decode_html_entities_utf8(char *dest, const char *src);
. Если src
является нулевым указателем, строка будет взята из dest
, т.е. объекты будут декодированы на месте. В противном случае декодированная строка будет помещена в dest
- который должен указывать на буфер, достаточно большой для хранения strlen (src) + 1
символов - и src
будет быть без изменений.
Функция вернет длину декодированной строки.
Обратите внимание, что я не проводил какого-либо обширного тестирования, поэтому высока вероятность ошибок ...
Я написал свой собственный код unescape; очень упрощен, но выполняет свою работу: pn_util.c