Actualmente, tar codifica los nombres de archivo en UTF
En realidad, tar no codifica / decodifica nombres de archivos, simplemente los copia del sistema de archivos tal como está. Si su configuración regional está basada en UTF-8 (como en muchas distribuciones modernas de Linux), será UTF-8. Desafortunadamente, la página de códigos del sistema de un cuadro de Windows nunca es UTF-8, por lo que los nombres siempre se modificarán, excepto en herramientas como WinRAR que permiten cambiar el juego de caracteres.
Por lo tanto, es imposible crear un archivo ZIP con nombres de archivo que no sean ASCII que funcionen en las versiones de Windows de diferentes países y su compatibilidad con carpetas comprimidas incorporadas.
Es una deficiencia de los formatos tar y zip que no haya información de codificación fija o suministrada, por lo que los caracteres no ASCII siempre serán no portables. Si necesita un formato de archivo que no sea ASCII, deberá usar uno de los formatos más nuevos, como el reciente 7z o rar. Lamentablemente, estos todavía son inestables; en 7zip necesita el -mcuinterruptor, y rar todavía no usará UTF-8 a menos que detecte caracteres que no están en la página de códigos.
Básicamente es un desastre horrible y si puede evitar distribuir archivos que contengan nombres de archivos con caracteres que no sean ASCII, estará mucho mejor.
                 
                
                
                 
Aquí hay un script simple de Python que he escrito para descomprimir archivos tar de UNIX en Windows:
fuente
El problema, al usar en Linux el valor predeterminado
tar(GNU tar), se resuelve ... agregando el--format=posixparámetro al crear el archivo.Por ejemplo:
tar --format=posix -cfEn Windows, para extraer los archivos, uso bsdtar .
En https://lists.gnu.org/archive/html/bug-tar/2005-02/msg00018.html está escrito (¡desde 2005 !):
PD: en lugar de escribir
--format=posix, puede escribir-H pax, que es más corto.fuente
Creo que tienes problemas con el formato del contenedor Zip. El alquitrán puede estar sufriendo el mismo problema.
Utilice los formatos de archivo 7zip (
.7z) o RAR (.rar) en su lugar. Ambos están disponibles para Windows y Linux; Elp7zipsoftware maneja ambos formatos.Acabo de probar la creación de
.7z,.rar,.zip, y.tararchivos tanto WinXP y Debian 5, y el.7zy.rarlos archivos / restaurar almacén de nombres de archivo correctamente mientras que el.zipy.tarlos archivos no. No importa qué sistema se use para crear el archivo de prueba.fuente
Tuve problemas con el desempaquetado
tary losziparchivos que recibo de los usuarios de Windows. Si bien no contesto la pregunta "cómo crear el archivo que funcionará", los siguientes scripts ayudan a descomprimirtaryziparchivar correctamente independientemente del sistema operativo original.ADVERTENCIA: uno tiene que sintonizar la fuente que codifica manualmente (
cp1251,cp866en los ejemplos a continuación). Las opciones de línea de comandos pueden ser una buena solución en el futuro.Alquitrán:
Cremallera:
UPD 2018-01-02 : uso el
chardetpaquete para adivinar la codificación correcta de la porción de datos sin procesar. Ahora el script funciona de forma predeterminada en todos mis archivos malos, así como en los buenos.Cosas a tener en cuenta:
chardetno funciona con un objeto unicode normal).Versión final:
fuente
POSIX-1.2001 especificó cómo TAR usa UTF-8.
A partir de 2007, la versión 6.3.0 del registro de cambios en PKZIP APPNOTE.TXT ( http://www.pkware.com/documents/casestudies/APPNOTE.TXT ) especificó cómo ZIP usa UTF-8.
Es solo qué herramientas soportan estos estándares adecuadamente, eso sigue siendo una pregunta abierta.
fuente