Tomcat Grails-将HTML文件作为UTF-8提供?

Tomcat Grails-将HTML文件作为UTF-8提供?,tomcat,grails,utf-8,mime-types,content-type,Tomcat,Grails,Utf 8,Mime Types,Content Type,UTF-8在通过tomcat通过/web应用提供的.html文件上被破坏。如果我直接用file://打开文件,它会呈现良好效果。如果我在run应用程序中查看文件,它看起来很好。然而,当我作为战争部署时,UTF-8字符看起来乱七八糟 响应的内容类型似乎正确。。。 内容类型:text/html;charset=UTF-8,HTML文件本身似乎也有正确的元声明 Tomcat的连接器默认设置为“UTF-8”,所以我认为这也不是问题所在。普惠制很好;只有HTML文件有问题 这到底是怎么回事 编辑: 使用

UTF-8在通过tomcat通过/web应用提供的.html文件上被破坏。如果我直接用
file://
打开文件,它会呈现良好效果。如果我在run应用程序中查看文件,它看起来很好。然而,当我作为战争部署时,UTF-8字符看起来乱七八糟

响应的内容类型似乎正确。。。
内容类型:text/html;charset=UTF-8
,HTML文件本身似乎也有正确的元声明

Tomcat的连接器默认设置为“UTF-8”,所以我认为这也不是问题所在。普惠制很好;只有HTML文件有问题

这到底是怎么回事

编辑: 使用firefox,我保存了原始HTML文件的本地副本,该文件直接从
file:///...
用于比较。这些文件之间的唯一区别是Tomcat版本将所有非ascii字符替换为:

根据您使用的编辑器,它可以呈现为空正方形或问号。字符本身似乎是
EF BF BD
,它替换了所有非ascii字符。不知何故,在提供文件时,tomcat或grails只是在踩unicode字节。你能做什么

编辑:
甚至这与我的文件具有相同的行为,这表明我的文件可能很好,而且Tomcat/Grails确实有问题。

在web.xml中的
字符编码过滤器之前是否有任何过滤器映射?这是使用错误编码呈现页面的常见原因
charEncodingFilter
通常应该是web.xml中的第一个过滤器映射。大多数插入过滤器映射的grails插件都有特殊的逻辑要在这之后插入。

grails 1.3.7至少不能正确地为HTML文件提供服务。编写您自己的文件服务器控制器。

今天,我在本地遇到了这个问题,我可以很好地工作,但在使用tomcat或glassfish部署时,我所有的文件都没有采用正确的编码。一位同事偶然发现了解决办法

​要使编码在将grails与tomcat一起使用时正常工作,必须设置以下tomcat选项:

server.xml:
 <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" />

catalina.sh:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms2048m -Xmx2048m
-XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+DisableExplicitGC"
server.xml:
catalina.sh:
JAVA_OPTS=“-Djava.awt.headless=true-Dfile.encoding=UTF-8
-服务器-Xms2048m-Xmx2048m
-XX:NewSize=256m-XX:MaxNewSize=256m-XX:PermSize=256m
-XX:MaxPermSize=256m-XX:+DisableExplicitGC”

检查结果时确保cntl-f5以避免缓存

是的,实际上有。我来测试一下。只是映射的顺序重要,而过滤器本身不重要吗?没有影响。我甚至确保在战争中包含的生成的web.xml首先列出了它,它确实列出了,但没有改变。更新了我的问题。看起来服务文件中的字节被完全销毁了,这让我非常困惑。
EF-BF-BD
表示UTF-8中的任何无效编码;如果将一个例如iso 8859-1编码的文件强制为utf-8,这正是您所期望的。当我使用亚洲字符运行时,我看到了相同的结果。中文在run应用程序中工作,在tomcat下失败。此外,所有编辑器都确认源HTML文件是UTF8,没有BOM表。w3的utf-8测试文件也会被压缩。我要用这个更新我的问题。