我有像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'$'\344''ytt'$'\366''ohje.pdf
如何更改上述命令,以便
Käyttöohje.pdf
被转换为Käyttöohje.pdf
(单独留下)和Käyttöohje.pdf
仍然转换为Käyttöohje.pdf
您不正确的文件似乎是双 UTF-8 编码。
例如,
ä
U+00E4 已被编码为:Ã
-> UTF-8), 0xa4 -> 0xc3 0xa4 (iso8859-1¤
-> UTF-8) 其中 U+00E4 的 UTF-8 编码的每个字节都被解释为是在单字节字符集(这里可能是 iso8859-1 或 windows-1252)中对某些其他字符进行编码,并在 UTF-8 中再次编码。所以你使用它是正确
convmv -f utf8 -t iso-8859-1
的。要单独保留未双重编码的文件,convmv
有一个特殊选项:--fixdouble
,所以它应该是:convmv
手册中有专门的部分:通过 iso8859-1 进行双 UTF 编码的文件(涵盖代码点 U+0000 U+00FF)将包含由 U+00C2 -> U+00F4 范围内的一个字符组成的非 ASCII 字符序列 (
ÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóô
)后跟一个或多个 U+0080 -> U+00BF 范围内的字符(U+0080 到 U+009F 是控制字符加不间断空格加¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿
)。这些序列相对不太可能出现在非双编码文本中,特别是考虑到 U+00E0 以上的字符(上面第一组中的小写字符)必须跟在第二组中至少 2 个字符之后,所以convmv --fixdouble
是不太可能弄错。