3

我对 Grails 应用程序有以下配置:

  1. Grails 1.3.7
    在 config.groovy 文件中设置如下
    grails.views.default.codec="none"
    grails.views.gsp.encoding="UTF-8"
    grails.converters.encoding="UTF-8"

  2. Tomcat 7.0.22
    为tomcat在server.xml文件中设置如下
    URIEncoding="UTF-8" useBodyEncodingForURI="true"

而且,在我的 gsp 页面中,我已经设置charset=UTF-8"了因为我想使用 UTF-8 字符编码。

然后,在任何输入框中,当我输入一个 unicode 字符并提交表单并检查控制器中相关操作处的参数转储时,unicode 字符是乱码。使用 Firebug 检查浏览器对服务器的请求表明 unicode 字符被正确编码并提交给服务器。

但是,如果我做某事。喜欢 params.unicodeInput = new String(params.unicodeInput.getBytes("8859_1"), "UTF8");

Unicode 字符被正确解码。我想知道为什么在正常的浏览器请求中没有正确解码 unicode 字符,尽管浏览器正确发送了 unicode 字符。

谢谢!!

编辑
我创建了一个具有相同配置的演示应用程序,演示应用程序上的一切似乎都很好。此问题仅存在于此特定应用程序中。可能是由于其他一些安装的插件吗?

并打印request.getCharacterEncoding()response.getCharacterEncoding()都产生UTF-8。

4

1 回答 1

4

我不确定,但是当我遇到 Grails + Tomcat 的 unicode 问题时,我解决了将以下参数添加到 Tomcat 的 setenv.sh 的问题: JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"

于 2015-11-06T21:11:34.080 回答