Eu tenho muitos arquivos zip nos quais há erros de codificação para os tremas alemães (äüöÄÜÖß). Eles aparecem no nome do arquivo.zip e nos diretórios e arquivos incluídos como este:
- Fünf = Fu╠ênf
- Räuber = Ra╠êuber
- Überfall = U╠êberfall
e assim por diante. Normalmente eu uso Linux, mas por causa desses problemas eu também tentei uma VM Windows7, mas isso resulta na mesma bagunça de codificação. No Linux, eu brinquei com convmv e desintoxicação, mas sem sucesso.
Quando eu uso
- convmv -f iso-8859-1 -t utf8 --replace --notest -r *
Eu recebo "Ignorando, já UTF-8".
Alguma idéia sobre isso?
find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest
Isso localiza os arquivos do dir atual e executa o convmv separadamente em cada arquivo. O nome do arquivo é exibido como lista terminada em nulo.Respostas:
O motivo pelo qual você está recebendo o aviso "já UTF-8" é que essas cadeias já estão realmente no UTF-8. O caractere "ü" foi codificado no estilo OSX como um 'u' seguido pelos dois bytes "\ xCC" e "\ x88". Esses dois bytes juntos formam a representação UTF-8 de \ u0308, a diérese combinada.
Se você olhar a página de código 437 listada aqui , verá o caractere \ xCC como "╠" e o caractere \ x88 como "ê".
O que quer que você esteja usando para exibir essas seqüências de caracteres não as interpreta como UTF-8, mas como CP437.
Uma prova rápida, se você ler ruby, exibida conforme o esperado no meu terminal UTF-8:
fonte
Meu palpite é o sistema de arquivos que você está tentando descomprimir ou manipular os arquivos. O FAT32 não vai gostar dos seus tremas. Tente copiar esses arquivos off da unidade flash (ou o que você quiser) e , em seguida, descompactar o arquivo zip para ver que tipo de personagens os nomes de arquivos produzir.
NTFS (Windows) e Ext4 (Mint) não devem ter problemas com a codificação de nome.
A codificação de nome dos próprios arquivos zip no sistema FAT32 provavelmente não será alterada ou corrigida quando você copiá-los para um sistema de arquivos de suporte adequado, mas os subdiretórios quando descompactados devem estar bem.
fonte
Primeiro, observe que a codificação de caracteres é sua própria seção do inferno. No mundo Windows, ainda existe um dualismo desagradável entre UTF-8 e M $, sendo estúpido por um longo tempo e insistindo na ISO-8859 (adivinhe quem veio com isso). Como mencionado acima, quase certamente tem algo a ver com o sistema de arquivos. Minha solução não é técnica, mas que já funcionou para mim há muitos anos:
Meu conselho pessoal para nomes de arquivos é sempre o mesmo: fique com alfanuméricos mais traço (-) e sublinhado (_). Escreva trema como ae, ue e oe. Não use espaços e outros caracteres especiais. No começo, é um pouco inconveniente, mas poupa muita dor em lugares inesperados.
Como uma observação lateral: sim, isso é uma espécie de "hack" desagradável, mas se você trabalha em várias plataformas, muitas vezes precisa voltar ao último denominador comum. Você deveria considerar que algo básico como a codificação de caracteres seria um padrão rígido, mas os padrões são difíceis de obter. Este XKCD resume bastante bem
fonte