Редактировать: Добавлено возможное решение (конец сообщения).
У меня была очень похожая проблема, хотя для имен файлов, а не для URL. Кажется, что основная проблема заключается в том, что не существует стандартного способа запросить «лучшую замену ASCII для ø», поэтому даже если вы можете найти все нежелательные символы, сложно автоматизировать, какую замену вставить.
Я разместил довольно много кода, который может быть полезен. Подробнее см. в этом вопросе StackOverflow .
Редактировать: Я думаю, что решение этой проблемы заключается в StringInfo , который позволяет перебирать суб-символы (суррогаты Unicode или комбинирующие символы) в строке. Это должно позволить обнаружить и преобразовать что-то вроде å (которое может быть закодировано в Unicode как A-WITH-RING или RINGED-A; отфильтровать декоратор и сохранить часть, которая является нормальным символом).