静态资源编码问题

时间:2018-06-13 10:17:41

标签: java tomcat tomcat7

我知道这是一个常见的问题,但我找不到现有的帖子,答案可以解决这个问题。

我遇到的问题是当前正在从旧机架服务器迁移到AWS EC2实例的应用程序。到目前为止我尝试的所有东西都没有解决问题。

我有一个我的war文件的发布版本,让我们说部署到Tomcat 7.0.32的app-1.0.war(是的我知道它已经老了,它是一个遗留的应用程序,现在我希望EC2实例像尽可能接近现有服务器),JDK为1.7.0_07。两种环境都有相同的构建。

旧的操作系统是SLES(SUSE Linux Enterprise Server),在AWS中我们使用的是Ubuntu 16.04.3 LTS。

在这两种环境中,语言环境都设置为 en_GB.UTF-8

此外,在两个环境中,Tomcat的server.xml在连接器中都有URIEncoding =“UTF-8”。

在两个系统上,如果我在已解决问题的缩小Javascript文件上使用 file -i ,它会将文件检测为utf-8:

myjavascript.min.js: text/plain charset=utf-8

当在文件系统上查看文件内容时,我可以看到在两个系统上都有一个带有£符号的字符串。

但是,如果我使用curl通过Tomcat请求相同的文件,旧的主机正确地提供它,而新的环境用 替换井号,即使两者都有内容类型应用程序/ x-JavaScript的;字符集= UTF-8

我尝试将 -Dfile.encoding = UTF-8 添加到args但这没有帮助。无论如何,它并没有在旧环境中使用。

1 个答案:

答案 0 :(得分:0)

事实证明,除了数据库之外,根本不是文件编码问题。

我将一些特殊字符直接回显到webapp的展开目录中的javascript文件中,然后重新启动tomcat。当使用curl检索文件时,我可以看到字符不在那里。所以我检查了文件系统上的文件,确定它们在那里。然后我做了一个查找,看看是否存在其他地方的同名文件,也许某种缓存。

到目前为止,不仅仅是我感到困惑,还有一些其他同事。然后我意识到javascript构成了内置于webapp的CMS使用的主题的一部分。首次部署应用程序时,CMS内容全部加载到数据库中。

因此,经过几个小时的疯狂追逐,结果证明这与我最初的预期完全不同。

相关问题