使用contentType application / json发布body后,Grails没有以UTF-8编码

时间:2014-03-13 16:59:37

标签: java json grails encoding utf-8

目前我正在使用grails应用程序,该应用程序使用其他应用程序使用JSON消息访问其他应用程序。

当我尝试提交带有变音字符(ööä)的表单时,帖子正文的编码不是UTF-8。因此,REST应用程序抛出了Json解析异常。

这是对REST应用程序的grails调用。

withRest(uri: "${url}/service/update") {
    def response = post(body: javaClassA, requestContentType: ContentType.JSON)
    return response.data
}

这就是grails应用程序如何从javaClassA格式化字段,这个snipet取自grails日志(你可以看到变音字符不是用UTF-8编码的)

  

DEBUG http.wire - >> “{” 内容 “:”[0xFC有] [0xf6] [0xe4] “...}”

然后是REST应用程序中的异常。

  

org.codehaus.jackson.JsonParseException:无效的UTF-8起始字节0xfc

我已经完成了所需的所有配置,以便在下一个链接之后将编码设置为grails中的UTF-8。

http://www.oodlestechnologies.com/blogs/Configuring-Grails-App-for-UTF8-Character-Encoding

How to get UTF-8 working in Java webapps?

系统规格:grails app(版本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。

1 个答案:

答案 0 :(得分:1)

解决方案:

ParserRegistry.setDefaultCharset("UTF-8");

在行

之后将上一行添加到BootStrap.groovy

def init = { servletContext ->