【问题标题】:encoding issue with static resource静态资源的编码问题
【发布时间】:2018-11-22 21:18:30
【问题描述】:

我知道这是一个常见问题,但我无法找到现有的帖子来解决这种情况。

我遇到了一个关于当前正在从旧机架服务器迁移到 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 请求同一个文件,旧主机会正确提供它,而新环境会用 �� 替换井号符号,即使两者都有内容类型 application/x-javascript;charset=UTF-8.

我尝试将 -Dfile.encoding=UTF-8 添加到 args 中,但这没有帮助。反正旧环境里没用过。

【问题讨论】:

    标签: java tomcat tomcat7


    【解决方案1】:

    结果证明这根本不是文件编码问题,而是数据库问题。

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

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

    因此,在花了几个小时追逐野鹅之后,结果证明这与我最初的预期完全不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2013-07-27
      • 2010-12-20
      • 2012-02-10
      • 2012-11-05
      相关资源
      最近更新 更多