Я использую QTextEdit для редактирования Rich-текста.
В нем содержится QTextDocument, который я заполняю через метод insertHtml() кодом, который выдает браузер через буфер обмена.
При такой вставке происходит искажение URL. Например, если был такой URL:
http://www.forkosh.com/cgi-bin/mimetex.cgi?\depth~\Large~f=b_o+\frac{a_1}{b_1+\frac{a_2}{b_2+\frac{a_3}{b_3+a_4}}}
То он превратится в такой:
http://www.forkosh.com/cgi-bin/mimetex.cgi?%5Cdepth%7E%5CLarge%7Ef=b_o+%5Cfrac%7Ba_1%7D%7Bb_1+%5Cfrac%7Ba_2%7D%7Bb_2+%5Cfrac%7Ba_3%7D%7Bb_3+a_4%7D%7D%7D
И далее возникает проблема: если web-сервер, с которого берется текст, не умеет работать с Percent Encode, то при попытке выкачивания картинки с Percent Encode URL он нужную картинку не отдаст. Серверу нужен именно такой URL, который прописан в его HTML-странице, а не что-то «почти то же самое, но преобразованное».
Проблема еще в том, что веб-сервер может быть настроен так, что при запросе Percent Encode URL он вместо того, чтобы ответить кодом 404 или еще какой ошибкой, он делает редирект, причем не на страницу с кодом 404, а на вполне нормальную страницу с кодом 200 (как в вышеприведенным URL). То есть, невозможно сделать реакцию на ошибку, и сделать запрос на URL с Percent Decode, который, скорее всего, сработал бы.
То есть, задача - это заставить QTextDocument хранить в своих фрагментах исходные URL. Как это можно сделать? Или как можно обойти проблему?