Estou sobrecarregado com um monte de arquivos cujos nomes estão ilegíveis além do reconhecimento. Embora eu saiba mais ou menos o que esses nomes continham originalmente, corrigi-los manualmente envolveria muito trabalho, então estou procurando uma maneira de fazer isso automaticamente.
O que poderia ter acontecido para esses caracteres chineses ficarem assim:
### original => garbled
### UTF-8 UTF-8
### UCS-2 UCS-2
雨中 => ╙ъ╓╨
e9 9b a8 e4 b8 ad e2 95 99 d1 8a e2 95 93 e2 95 a8
96e8 4e2d 2559 044a 2553 2568
照片 => ╒╒╞м
e7 85 a7 e7 89 87 e2 95 92 e2 95 92 e2 95 9e d0 bc
7167 7247 2552 2552 255e 043c
女人 => ┼о╚╦
e5 a5 b3 e4 ba ba e2 94 bc d0 be e2 95 9a e2 95 a6
5973 4eba 253c 043e 255a 2566
童心 => ═п╨─
e7 ab a5 e5 bf 83 e2 95 90 d0 bf e2 95 a8 e2 94 80
7ae5 5fc3 2550 043f 2568 2500
绿肥红瘦 => ┬╠╖╩║ь╩▌
e7 bb bf e8 82 a5 e7 ba a2 e7 98 a6 e2 94 ac e2 95 a0 e2 95 96 e2 95 a9 e2 95 91 d1 8c e2 95 a9 e2 96 8c
7eff 80a5 7ea2 7626 252c 2560 2556 2569 2551 044c 2569 258c
Já vi coisas semelhantes acontecerem antes, por exemplo, quando uma sequência codificada em UTF-8 é interpretada erroneamente como um byte único (por exemplo, Latin-1 ou CP1251) e depois convertida em UTF-8 novamente, mas isso não parece seja o caso aqui.
Na verdade, não há garantia de que a codificação original era UTF-8, poderia ter sido GB ou alguma outra codificação herdada usada na China.
Alguma ideia?
╙ъ╓╨
estád3 ea d6 d0
na página de códigos 866 da IBM, que também está雨中
nas páginas de códigos GB2312, GBK e CP936. Portanto, é mais provável que seja uma detecção incorreta de página de código bastante normal (do texto GB2312 como IBM866).Uma causa comum para tais erros é compactar/descompactar entre culturas, embora eu não possa afirmar que isso aconteceu no seu caso.
Os exemplos que você deu parecem um pouco semelhantes ao descrito no artigo Nome de arquivo chinês corrompido com Un-ZIP na linha 3:
Mais alguns casos são mostrados no artigo Zip files and Encoding – I hate you , onde é dado outro exemplo de três codificações diferentes para um caractere, dependendo de onde este caractere foi compactado:
Para o chinês, há mais codificações possíveis com métodos de codificação mais antigos.
Se você está procurando um método automático para desfazer os nomes ilegíveis, sem saber a codificação original e os utilitários e sistemas operacionais envolvidos, eu não saberia por onde começar.
Se forem semelhantes à linha 3 acima, você pode começar compactando no Linux e descompactando no Windows GB18030, ou tentativas semelhantes para fazer essas ações compactar/descompactar ao contrário.
Você pode usar um
convmv
utilitário que pode converter nomes de arquivo de um conjunto de caracteres para outro. Algo comoconvmv -t cp866 -f gb2312 * ../target
validar o que ele faz e então invocar com--notest
.