在文件名中用未知字符集替换未知字符的最佳做法是什么?

在文件名中用未知字符集替换未知字符的最佳做法是什么?

即我有一个名为Porträt.pdf的文件。

但是文件名是使用在 ubuntu 中无法正确显示的字符集创建的,如下例所示。

在此处输入图片描述

当您有多个文件名,并且由于它在终端命令中的编码而无法使用这个特殊字符时,重命名文件名中的此类字符的最佳做法是什么?

答案1

理论上,了解文件使用的字符编码可能很棘手,但大多数情况下,错误来自 Windows 系统和程序仍然只使用 Latin1 而不是 UTF-8。在convmv -f cp850 -t utf-8 *包含损坏文件的文件夹中运行不带引号的程序并尝试一下。

(您需要convmv安装包)

答案2

如果您只想删除一些字符,您可以尝试这个:

rename "s/[^A-Za-z0-9-_]/_/g"

这会将除字符、数字或破折号之外的所有字符替换为下划线。使用选项运行-n以查看试运行中发生的情况。

答案3

我猜想现代操作系统通常选择 UTF-8 来编码文件名。从这个意义上说,文件名中包含非美国字符不是问题。您所遇到的情况可能是使用非 UTF-8 编码创建的文件名的结果。很难说您可以用它做什么,这也取决于您想要什么。如果您需要正确的文件名(例如“Porträt.pdf”),您需要先知道原始文件名的编码,然后才能转换它/它们。由于存在大量非常不同的编码,因此“猜测”并不容易。

相关内容