我正在尝试使用 convmv 将俄语 zipfile 中的文件名转换为 UTF-8。原始文件名:“æ óá¡¿½∞¡δ⁄ áα«⁄áЄ«¼.jpg”(æ\ óá¡¿½∞¡δ⁄\ áα«¼áЄ«¼.jpg 带斜线)
该分析仪(https://2cyr.com/decode/?lang=en) 检测到源编码 CP866 + 显示为 CP437,并成功解码为所需的 С ванильным ароматом.jpg。
我的问题是,如何设置 convmv 才能正确解码?对于convmv -f cp866 -t utf-8 filename
,我得到“已经是 UTF-8”,在 --nosmart 模式下我得到胡言乱语。
答案1
一次convmv
只能修复一个级别的错误。您的特定文件更复杂。它最初是 cp866,并且在某个时候被转换为 UTF-8,但无论该转换如何,都认为它最初是 cp437,因此转换错误。要解决此问题,您需要运行convmv
两次:
convmv -f utf-8 -t cp437 --notest 'æ óá¡¿½∞¡δ¼ áα«¼áΓ«¼.jpg'
convmv -f cp866 -t utf-8 --notest $'\x91 \xa2\xa0\xad\xa8\xab\xec\xad\xeb\xac \xa0\xe0\xae\xac\xa0\xe2\xae\xac.jpg'
请注意,我必须在第二个命令中转义名称。如果您正在批量运行此操作和/或不想处理这样做,您可以使用类似 的内容*.jpg
,或者将所有受影响的文件放入其自己的目录中并使用 的-r
选项convmv
。