在 Linux(openSUSE)机器上,我尝试部署包含名称带有 Unicode 字符的文件的 Tomcat 8 应用程序(war 文件)。
在 war 文件中,其名称如下:
бжк-природний-1496336830201.xml
但部署后文件如下所示:
???-?????????????-1496336830201.xml
另外,当我手动解压文件时,名称也被破坏了。
如何告诉 unzip 和 Tomcat 正确部署文件名?
顺便说一句 - 我已经将此 war 文件下载到我的 Windows 机器上并在那里解压 - 一切看起来都很好。
更新
这是一个带有 unicode 文件名的示例 war 文件:战争文件
这场战争中文件的文件名有什么问题?
答案1
我猜你需要包裹解压缩-rcc。我在我的电脑上测试过,如果我使用 unzip-rcc,我会成功。但如果我使用原始的 unzip,它会失败。
我是一名中国用户,也需要 Unicode。每次我安装 openSUSE 时,都会优先安装此软件包。;-)
答案2
WAR 实际上包含以 UTF-8 编码的文件名。但是表示这一点的标志(通用标志的第 11 位)未设置,但这是可能的,因为 JAR 命令使用了另一种名称编码变体(我拥有的 JAR 命令实际上就是这种情况)。
所以真正的答案是:不要使用常规的 ZIP 命令来解压,而是使用 JAR 命令本身:
jar -xvf api.war
产量:
created: WEB-INF/
created: WEB-INF/classes/
created: WEB-INF/classes/sample-data/
created: WEB-INF/classes/sample-data/decisions/
created: WEB-INF/classes/sample-data/decisions/novobudivy_refs/
inflated: WEB-INF/classes/sample-data/decisions/novobudivy_refs/13я-стац_я-великого-фонтану-1496338558663.xml