![如何在 Linux 中提取文件名非 Unicode 的 RAR?](https://linux22.com/image/1485768/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%8F%90%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D%E9%9D%9E%20Unicode%20%E7%9A%84%20RAR%EF%BC%9F.png)
我有一个 RAR 档案,其文件名采用的是 GB2312 而不是 Unicode。因此,在我提取它之后,出现了许多“无效编码”警告。
据说官方实用程序可以解决这个问题,但我使用的是 Raspberry Pi,其处理器是 ARM。他们的只提供 x86 和 x64 版本官方网站。
那么,如何在基于 ARM 的机器上正常提取档案?
答案1
这些作业的标准 Unix 实用程序是iconv
和recode
。
基本上,unrar
将档案放入空目录中后,检查精确的使用以下命令设置字符集file
:
$ file -bi MyFileName
text/plain; charset=us-ascii
现在,您可以通过以下任一方式更改字符集
iconv -f gb2312 -t utf8 filename > newfilename
recode UTF-8 filename
注意:recode
对文件进行操作in place
,因此您可能需要在一些副本上尝试一下,然后再将其释放到真实数据上。
如果您还需要翻译文件名:
for i in *; do
newi=$(echo "$i" | iconv -f gb2312 -t utf-8)
mv "$i" "newi"
done
我不知道你是否可以使用它本身iconv
作为过滤器unrar
,例如
unrar YourArchive -p | iconv -f gb2312 -t utf-8 > somefile