我有像Käyttöohje.pdf这样的文件名。这应该是Käyttöohje.pdf。
我可以使用以下命令对子目录中的所有文件进行转换:
convmv -f utf8 -t iso-8859-1 -r --notest *这会将Käyttöohje.pdf转换为Käyttöohje.pdf。
问题是如果文件已经在表单Käyttöohje.pdf中
文件Käyttöohje.pdf被转换为K'
如何更改上面的命令,以便
Käyttöohje.pdf被转换为Käyttöohje.pdf (单独使用)和Käyttöohje.pdf仍被转换为Käyttöohje.pdf\344''ytt'
如何更改上面的命令,以便
F18H19
D10被转换为D11 (单独使用)和
H212H113
D14仍被转换为D15
H216F217\366''ohje.pdf
如何更改上面的命令,以便
F18H19
D10被转换为D11 (单独使用)和
H212H113
D14仍被转换为D15
H216F217
发布于 2022-01-11 08:21:17
您的不正确文件似乎是双UTF-8编码。
例如,ä U+00E4被编码为:
à -> UTF-8),0xa 4 -> 0xc3 0xa4 ( in 8859-1 ¤ -> UTF-8 ),其中U+00E4的UTF-8编码的每个字节被解释为是在单字节字符集(这里可能是in 8859-1或windows-1252)中对其他字符的编码,并在UTF-8中再次编码。因此,使用convmv -f utf8 -t iso-8859-1来实现这一点是正确的。为了让那些不是双编码的文件单独保存,convmv有一个特殊的选项:--fixdouble,所以它应该是:
convmv --fixdouble -f utf8 -t iso-8859-1 -r --notest .在convmv手册中有一个专门讨论这一问题的部分:
如何撤消双UTF-8 (或其他)编码的文件名有时可能会发生“双重编码”的某些文件名,例如,文件名已经被UTF-8编码,并且您意外地从某个字符集转换为UTF-8。您可以简单地通过相反的方式转换它来撤销它。从-字符集必须是UTF-8和对-字符集必须是从-字符集,你以前不小心使用。如果您使用“您应该检查以获得正确的结果,在没有“-notest”之前,"--qfrom“选项也可能有帮助,因为双utf-8文件名如果要打印的话,可能会搞砸您的终端--它们通常包含控制序列,这些控制序列会对终端窗口做一些有趣的事情。如果您对意外转换的字符集不确定,那么使用"--qfrom“是一种很好的方法,可以在不破坏文件名的情况下完成所需的编码。
通过in 8859-1(涵盖代码点U+0000 U+00FF)编码的双UTF文件将包含非ASCII字符序列,其中包括U+00C2 -> U+00F4范围(ÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóô)中的一个字符,以及U+0080 -> U+00BF范围中的一个或多个字符(U+0080到U+009F是控制字符加上非中断空间加上¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿)。这些序列相对不太可能出现在非双编码文本中,特别是考虑到U+00E0以上的字符(第一组中的小写字符)必须在第二组中至少跟随2个字符,所以convmv --fixdouble不太可能出错。
https://unix.stackexchange.com/questions/685865
复制相似问题