如何在 Linux 上正确提取包含非 ASCII 字符作为文件夹名称或文件名的 rar 存档文件

如何在 Linux 上正确提取包含非 ASCII 字符作为文件夹名称或文件名的 rar 存档文件

我使用 rar 列出/提取档案,但非 ASCII 字符变成了无法读取的文字。

7z 可以列出带有可读字符的文件夹名称/文件名,但是 7z 在提取 rar 档案时显示不支持的方法错误。

答案1

使用unrar而不是rar

该答案来自@Ignacio vazquez-Abrams。

答案2

我遇到了同样的问题,并想出了一个有些复杂的解决方案:您需要安装几个程序,例如 unrar 和 hexedit(或任何具有相同功能的其他程序),然后创建一个简单的 bash 脚本来执行提取,在我的情况下,该脚本的内容是:

#!/bin/bash
unrar e -v diccionario-arabe-espanol.rar "Diccionario Arabe espaNol.pdf"

我用“ASCII 版本”替换了我想要提取的文件的真实名称,其中 á(重音符号 a:ASCII 十六进制代码 A0)和 ñ(波浪号 n:ASCII 代码 A4)被替换为任何其他 ASCII 字符(不会被编辑器用多字节 UTF-8 字符替换的字符)。您可以使用 hexedit 找出文件头以验证您感兴趣的文件的名称,在那里您将在十六进制部分看到用于麻烦字符的代码。

像往常一样保存脚本并更改权限,然后使用 hexedit(或您选择的二进制或十六进制编辑器)对其进行编辑,并相应地更改要提取的文件名的字符,也就是说,在我的示例中,出现 A 的地方,将其替换为十六进制代码 A0,并将“espaNol”中的 N 替换为十六进制代码 A4,保存并运行它,就是这样,您将得到提取的文件,并且在我的系统(linux Ubuntu 9.10)中,我的 unrar 版本(UNRAR 4.00 beta 3 免费软件)创建了提取的文件,其名称正确转换为 UTF-8

将来我会创建另一个脚本来自动执行上述所有步骤。希望它对你有用。

相关内容