Grails2.5不显示;UTF-8“;“中的字符”;“显示”;页,但在“中显示正确的字符”;编辑";。Grails使用了错误的字符集

Grails2.5不显示;UTF-8“;“中的字符”;“显示”;页,但在“中显示正确的字符”;编辑";。Grails使用了错误的字符集,grails,utf-8,Grails,Utf 8,我们刚刚注意到,所有的UTF 8字符,如英镑和欧元,在我们的grails应用程序中显示为“?”,但仅在特定页面上显示。我们检查了数据库(mysql 5.6),它们肯定是正确的UTF-8字符,例如: SELECT * FROM currency c WHERE LENGTH(c.prefix) <> CHAR_LENGTH(c.prefix) 其中,大多数页面的正确响应标题为: Content-Type:text/html;charset=ISO-8859-1 Content-Ty

我们刚刚注意到,所有的UTF 8字符,如英镑和欧元,在我们的grails应用程序中显示为“?”,但仅在特定页面上显示。我们检查了数据库(mysql 5.6),它们肯定是正确的UTF-8字符,例如:

SELECT * FROM currency c
WHERE LENGTH(c.prefix) <> CHAR_LENGTH(c.prefix)
其中,大多数页面的正确响应标题为:

Content-Type:text/html;charset=ISO-8859-1
Content-Type:text/html;charset=utf-8
我们所有的“显示”、“索引”和“列表”页面都有ISO-8859-1,我们所有的“编辑”gsp页面都有正确的UTF-8

但是,当我们查看GPS和控制器时,代码是相同的

如果我们在项目上对ISO-8859-1进行全局搜索,我们只能在web.xml中找到sitemesh的条目。我们不知道这是否相关

由于工作的GSP和不工作的GSP之间没有任何区别,控制器方法也没有任何区别,因此我们不知道如何修复grails使用的响应头字符集

纯框架页面(空控制器)有完全相同的问题-show有错误的字符集,并将UTF-8字符显示为“?”,但编辑工作正常


有什么想法吗?

解决方案是将此添加到每个控制器:

def beforeInterceptor = {
    response.characterEncoding = 'UTF-8' 
}
显然这在Grails2.5.1中是固定的


解决方案是将此添加到每个控制器:

def beforeInterceptor = {
    response.characterEncoding = 'UTF-8' 
}
显然这在Grails2.5.1中是固定的