Problemas com caracteres acentuados não-UTF em URL

Estamos migrando um fórum em espanhol e configurando permalinks para todos os tópicos.
Os títulos e URLs existentes possuem caracteres acentuados em ISO 8859-15, codificados com percent encoding.

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

Estamos reescrevendo-os com /forum\\/showthread.php\\?(\\d*).*/thread/\\1, mas infelizmente obtemos um erro de servidor (com uma página em branco) antes que a normalização do permalink seja processada.

Você pode ver isso, por exemplo, no Try:

https://try.discourse.org/forum/showthread.php?96700-Galer�a-de-im�genes resulta em uma página em branco e “bad request”. Rack::QueryParser::InvalidParameterError (invalid byte sequence in UTF-8)

https://try.discourse.org/forum/showthread.php?96700-Galeria-de-imagenes resulta na página regular de “not found”.

Você tem alguma dica sobre como contornar isso sem muitos ajustes personalizados no nginx?

3 curtidas

Talvez decodificar 96700-Galer%EDa-de-im%E1genes como ISO 8859-15 e codificá-lo como UTF-8 antes de gerar o permalink seja uma solução? Ou existem links de entrada por aí que usam os caracteres codificados em ISO 8859-15 na URL?

Lembre-se, não tenho certeza se é necessário usar codificação percentual para que os permalinks funcionem - eu não olhei o código. Acho que você precisará experimentar um pouco. Não acho que haja uma solução fácil para isso. Se você encontrar uma solução, por favor, poste-a aqui. Pode ser útil para outros.

1 curtida

Sim, existem cerca de 150.000 links externos sobre os quais não temos controle.