Вы не можете надежно решить эту проблему только на стороне сервера, потому что в то время, когда вы получили декодированные строки в вашем контроллере grails, они уже были декодированы контейнером сервлета, предполагая, что поток байтов был в charset по умолчанию (utf-8) и CharsetDecoder ужезаменил недопустимые последовательности байтов на?Это означает, что вы не можете надежно получить исходные байты обратно из декодированных строк, чтобы повторно декодировать их с использованием некоторого другого набора символов (iso-8859-1).
Это можно решить на стороне клиента http, указав набор символов в заголовке типа содержимогопри публикации:
Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1
Другой вариант - опубликовать данные mutipart, а затем сервлет-контейнер приложения grails не будет декодировать байты в строку, и вам придется вручную декодировать их в строку, используя любую кодировку, которую вы хотите.