В настоящее время я работаю в приложении grails, которое использует вызовы отдыха для доступа к другому приложению с использованием сообщений JSON.
Когда я пытаюсь отправить форму с символами умляутов (üöä), кодировка тела для сообщения не является UTF-8. Из-за этого приложение REST бросает исключение Json parse.
Это призыв grails к приложению REST.
withRest(uri: "${url}/service/update") {
def response = post(body: javaClassA, requestContentType: ContentType.JSON)
return response.data
}
Так как приложения grails формируют поля из javaClassA, этот снайпер был взят из журналов grails (вы можете видеть, что символы умляута не кодируются в UTF-8)
DEBUG http.wire - >> "{" content ":" [0xfc] [0xf6] [0xe4] ",...}"
И следующее исключение в приложении REST.
org.codehaus.jackson.JsonParseException: недопустимый стартовый байт UTF-8 0xfc
Я сделал все конфигурации, необходимые для установки кодировки в UTF-8 в grails, следуя следующим ссылкам.
http://www.oodlestechnologies.com/blogs/Configuring-Grails-App-for-UTF8-Character-Encoding
Как заставить UTF-8 работать в Java Webapps?
Спецификации системы: приложение grails (версия 2.3.4), emebedded tomcat (версия 7.0.47), Java 1.7.0_25, maven 3.1.1, SO Windows 7.
Также кодировка браузера и локальная кодировка файлов выглядят oka. А также JVM использует -Dfile.encoding = UTF8
У меня кончились идеи, почему это может произойти.
Помощь более чем приветствуется.
Thnks.
Решение:
ParserRegistry.setDefaultCharset("UTF-8");
Добавьте предыдущую строку в BootStrap.groovy сразу после строки
def init = { servletContext ->