我有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字符并提交表单并在控制器中的相关操作中检查参数dump时,在任何输入框中,unicode字符都是乱码。使用Firebug检查对服务器的浏览器请求显示正确编码的unicode字符并提交给服务器。
但是,如果我做某事。喜欢
params.unicodeInput = new String(params.unicodeInput.getBytes("8859_1"), "UTF8");
unicode字符被正确解码。我想知道为什么unicode字符在正常的浏览器请求中没有被正确解码,尽管浏览器正确发送了unicode字符。
谢谢!
修改
我创建了一个具有相同配置的演示应用程序,在演示应用程序上一切都很好。此问题仅存在于此特定应用中。可能是由于其他一些已安装的插件?
将request.getCharacterEncoding()
和response.getCharacterEncoding()
两种产品打印为UTF-8。
答案 0 :(得分:1)
我不确定,但是当我遇到Grails + Tomcat的unicode问题时,我解决了将以下参数添加到Tomcat的setenv.sh的问题:
JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"