grails 2.5在“show”页面中不显示“UTF-8”字符,但在“edit”中显示正确的字符。 Grails正在使用错误的字符集

时间:2015-12-23 18:48:16

标签: grails utf-8

我们刚刚注意到所有的UTF 8字符,例如£和€都是“?”在我们的grails应用程序中,但仅限于特定页面。我们检查了数据库(mysql 5.6),它们肯定是正确的UTF-8字符,例如这样做:

SELECT * FROM currency c
WHERE LENGTH(c.prefix) <> CHAR_LENGTH(c.prefix)

返回以£和€作为前缀的货币行(但不包含具有正常字符作为前缀的行

问题出现在Linux上的tomcat和从Windows 8上的Intellij 14中运行。

使用chrome dev工具,症结似乎是有问题的页面有一个响应头:

Content-Type:text/html;charset=ISO-8859-1

其中大多数页面都有正确的响应头:

Content-Type:text/html;charset=utf-8

我们所有的“show”,“index”和“list”页面都有ISO-8859-1,我们所有的“编辑”gsp页面都有正确的UTF-8。

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

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

由于GSP的工作原理与没有的GSP之间没有区别,控制器方法也没有任何区别,因此我们不知道如何修复Grails用作charset的字符集。它的响应标题。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

def beforeInterceptor = {
    response.characterEncoding = 'UTF-8' 
}

显然这已在grails 2.5.1

中修复

https://jira.grails.org/browse/GRAILS-11830