Проблемы с URL-адресами, содержащими акцентированные символы не в UTF-8

Мы мигрируем испанский форум и настраиваем постоянные ссылки для всех тем.

В существующих заголовках и URL-адресах используются символы с диакритическими знаками в кодировке ISO 8859-15, экранированные с помощью процентного кодирования:

forum/showthread.php?96700-Galer%EDa-de-im%E1genes

Мы переписываем их с помощью выражения /forum\/showthread.php\?(\d*).*/thread/\1, но, к сожалению, возникает ошибка сервера (белая страница) до того, как будет выполнена нормализация постоянных ссылок.

Это можно увидеть, например, на Try:

https://try.discourse.org/forum/showthread.php?96700-Galer�a-de-im�genes выдаёт пустую страницу и сообщение «bad request». Rack::QueryParser::InvalidParameterError (invalid byte sequence in UTF-8)

https://try.discourse.org/forum/showthread.php?96700-Galeria-de-imagenes выдаёт обычную страницу «not found».

Есть ли у вас советы, как обойти эту проблему без излишней настройки nginx под конкретный случай?

Возможно, решение заключается в декодировании строки 96700-Galer%EDa-de-im%E1genes в кодировке ISO 8859-15, а затем её перекодировании в UTF-8 перед генерацией постоянной ссылки? Или же существуют входящие ссылки, в которых используются символы, закодированные в ISO 8859-15?

Кстати, я не уверен, что для работы постоянных ссылок вообще необходимо использовать процентное кодирование — я не изучал код. Думаю, вам придётся немного поэкспериментировать. Не думаю, что для этого существует простое решение. Если вы найдёте решение, пожалуйста, опубликуйте его здесь. Это может быть полезно и для других.

Да, существует около 150 000 внешних ссылок, которые мы не контролируем.