NES Asked: 2011-02-12 06:29:21 +0800 CST2011-02-12 06:29:21 +0800 CST 2011-02-12 06:29:21 +0800 CST 从文件名中的未知字符集中替换未知字符的最佳实践? 772 即我有一个名为 Porträt.pdf 的文件。 但是文件名是用一个字符集创建的,它在 ubuntu 中没有正确显示,如下例所示。 当您有多个文件名并且由于终端命令中的编码而无法使用此特殊字符时,在文件名中重命名此类字符的最佳做法是什么? charset 3 个回答 Voted user11842 2011-03-05T15:54:50+08:002011-03-05T15:54:50+08:00 理论上,知道文件使用的字符编码可能会很棘手,但在大多数情况下,错误来自 Windows 系统和程序,仍然只使用 Latin1 而不是 UTF-8。convmv -f cp850 -t utf-8 *在包含损坏文件的文件夹中不带引号运行并试一试。 (您需要convmv安装软件包) Martin Ueding 2011-08-12T02:01:14+08:002011-08-12T02:01:14+08:00 如果你只是想摆脱一些字符,你可以试试这个: rename "s/[^A-Za-z0-9-_]/_/g" 这将用下划线替换不仅仅是字符、数字或破折号的每个字符。运行-n选项以查看试运行中发生的情况。 LGB 2011-02-12T06:34:28+08:002011-02-12T06:34:28+08:00 我猜现代操作系统经常选择 UTF-8 来编码文件名。从这个意义上说,文件名中包含非美国字符不是问题。您所经历的可能是使用非 UTF-8 编码创建的文件名的结果。很难说你能用它做什么,这也取决于你想要什么。如果您需要正确的文件名(例如“Porträt.pdf”),您首先需要知道原始文件名的编码,然后您可以转换它/它们。仅仅因为有大量非常不同的编码,所以“猜测”并不容易。
理论上,知道文件使用的字符编码可能会很棘手,但在大多数情况下,错误来自 Windows 系统和程序,仍然只使用 Latin1 而不是 UTF-8。
convmv -f cp850 -t utf-8 *
在包含损坏文件的文件夹中不带引号运行并试一试。(您需要
convmv
安装软件包)如果你只是想摆脱一些字符,你可以试试这个:
这将用下划线替换不仅仅是字符、数字或破折号的每个字符。运行
-n
选项以查看试运行中发生的情况。我猜现代操作系统经常选择 UTF-8 来编码文件名。从这个意义上说,文件名中包含非美国字符不是问题。您所经历的可能是使用非 UTF-8 编码创建的文件名的结果。很难说你能用它做什么,这也取决于你想要什么。如果您需要正确的文件名(例如“Porträt.pdf”),您首先需要知道原始文件名的编码,然后您可以转换它/它们。仅仅因为有大量非常不同的编码,所以“猜测”并不容易。