Tengo muchos archivos zip donde hay errores de codificación para las diéresis alemanas (äüöÄÜÖß). Aparecen tanto en el archivo filename.zip como en los directorios y archivos incluidos de esta manera:
- Fünf = Fu╠ênf
- Räuber = Ra╠êuber
- Überfall = U╠êberfall
y así. Por lo general, uso Linux, pero debido a estos problemas también probé una máquina virtual Windows7, pero resulta en el mismo error de codificación. En Linux jugué con convmv y desintoxicación, pero sin éxito.
Cuando uso
- convmv -f iso-8859-1 -t utf8 --replace --notest -r *
Me sale "Skipping, ya UTF-8".
¿Alguna idea sobre esto?
find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest
Esto busca archivos desde el directorio actual hacia adelante y ejecuta convmv por separado en cada archivo. El nombre del archivo está codificado como una lista nula.Respuestas:
La razón por la que recibe la advertencia "ya UTF-8" es que esas cadenas realmente ya están en UTF-8. El carácter "ü" fue codificado al estilo OSX como una 'u' seguido de los dos bytes "\ xCC" y "\ x88". Estos dos bytes juntos forman la representación UTF-8 de \ u0308, la diéresis combinada.
Si observa el listado de la página de códigos 437 aquí , verá el carácter \ xCC como "╠" y el carácter \ x88 como "ê".
Lo que sea que esté usando para mostrar esas secuencias de caracteres no las interpreta como UTF-8 sino como CP437.
Una prueba rápida, si lee Ruby, que se muestra como se esperaba en mi terminal UTF-8:
fuente
Mi conjetura es el sistema de archivos que está intentando descomprimir o manipular los archivos. A FAT32 no le van a gustar tus diéresis. Intente copiar estos archivos de la unidad flash (o lo que tenga) y luego descomprima el archivo zip para ver qué tipo de caracteres producen los nombres de archivo.
Tanto NTFS (Windows) como Ext4 (Mint) no deberían tener problemas con la codificación del nombre.
Lo más probable es que la codificación de nombre de los archivos zip en el sistema FAT32 no cambie o se arregle cuando los copie en un sistema de archivos de soporte adecuado, pero los subdirectorios cuando se descompriman deberían estar bien.
fuente
Primero tenga en cuenta que la codificación de caracteres es su propia sección del infierno. En el mundo de Windows todavía existe un desagradable dualismo entre UTF-8 y M $ jugando estúpido durante mucho tiempo e insistiendo en ISO-8859 (adivina quién se le ocurrió). Como se mencionó anteriormente, es casi seguro que tiene algo que ver con el sistema de archivos. Mi solución no es técnica, sino que me ha funcionado durante muchos años:
Mi consejo personal para los nombres de archivos es siempre el mismo: solo quédate con alfanuméricos más guión (-) y guión bajo (_). Escriba umlaute como ae, ue y oe. No uses espacios y otros caracteres especiales. Al principio es un poco incómodo, pero te ahorrará mucho dolor en lugares inesperados.
Como nota al margen: sí, esto es una especie de "truco" desagradable, pero si trabajas multiplataforma, a menudo tienes que recurrir al último denominador común. Darías por sentado que algo básico, como la codificación de caracteres, sería un estándar difícil, pero resulta que los estándares son difíciles de conseguir. Este XKCD lo resume muy bien
fuente