openSUSE 解压 unicode 问题

openSUSE 解压 unicode 问题

在 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

相关内容