【问题标题】:grails 2.5 not displaying "UTF-8" chars in "show" pages, but shows correct chars in "edit". Grails is using the wrong charsetgrails 2.5 在“显示”页面中不显示“UTF-8”字符,但在“编辑”中显示正确的字符。 Grails 使用了错误的字符集
【发布时间】:2023-04-05 17:56:01
【问题描述】:

我们刚刚注意到所有 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 开发工具,症结似乎是有问题的页面的响应标头为:

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 字符显示为“?”,但可以编辑。

有什么想法吗?

【问题讨论】:

    标签: grails utf-8


    【解决方案1】:

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

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

    显然这已在 grails 2.5.1 中修复

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

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      相关资源
      最近更新 更多