【发布时间】: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 中,但这没有帮助。反正旧环境里没用过。
【问题讨论】: