我对 Grails 应用程序有以下配置:
Grails 1.3.7
在 config.groovy 文件中设置如下
grails.views.default.codec="none"
grails.views.gsp.encoding="UTF-8"
grails.converters.encoding="UTF-8"
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。