Actuellement, tar code les noms de fichiers en UTF
En fait, tar ne code pas / décode les noms de fichiers, il les copie simplement du système de fichiers tels quels. Si votre environnement local est basé sur UTF-8 (comme dans de nombreuses distributions Linux modernes), ce sera UTF-8. Malheureusement, la page de codes système d'une boîte Windows n'est jamais UTF-8, donc les noms seront toujours modifiés, sauf sur des outils tels que WinRAR qui permettent de modifier le jeu de caractères utilisé.
Il est donc impossible de créer un fichier ZIP avec des noms de fichiers non ASCII qui fonctionnent dans les versions de Windows de différents pays et leur prise en charge intégrée des dossiers compressés.
Il y a une lacune des formats tar et zip, car il n'y a pas d'informations de codage fixes ou fournies, donc les caractères non ASCII seront toujours non portables. Si vous avez besoin d'un format d'archive non ASCII, vous devrez utiliser l'un des formats les plus récents, tels que 7z récent ou rar. Malheureusement, ce sont toujours loufoques; dans 7zip, vous avez besoin du -mcu
commutateur, et rar n'utilisera toujours pas UTF-8 à moins qu'il ne détecte des caractères absents de la page de codes.
Fondamentalement, c'est un désordre horrible et si vous pouvez éviter de distribuer des archives contenant des noms de fichiers avec des caractères non ASCII, vous serez beaucoup mieux.
Voici un simple script Python que j'ai écrit pour décompresser les fichiers tar d'UNIX sous Windows:
la source
Le problème, en utilisant Linux par défaut
tar
(GNU tar), est résolu ... en ajoutant le--format=posix
paramètre lors de la création du fichier.Par exemple:
tar --format=posix -cf
Sous Windows, pour extraire les fichiers, j'utilise bsdtar .
Dans https://lists.gnu.org/archive/html/bug-tar/2005-02/msg00018.html il est écrit (depuis 2005 !!):
PS Au lieu de taper,
--format=posix
vous pouvez taper-H pax
, ce qui est plus court.la source
Je crois que vous rencontrez des problèmes avec le format de conteneur Zip lui-même. Le goudron souffre peut-être du même problème.
Utilisez plutôt les formats d'archive 7zip (
.7z
) ou RAR (.rar
). Les deux sont disponibles pour Windows et Linux; lep7zip
logiciel gère les deux formats.Je viens de tester créant
.7z
,.rar
,.zip
et.tar
fichiers à la fois Windows XP et Debian 5, et.7z
et.rar
fichiers de banque / restaurer correctement les noms de fichiers alors que les.zip
et les.tar
fichiers ne le font pas. Peu importe le système utilisé pour créer l'archive de test.la source
J'ai eu des problèmes avec le déballage
tar
et leszip
fichiers que je reçois des utilisateurs de Windows. Bien que je ne réponde pas à la question "comment créer l'archive qui fonctionnera", les scripts ci-dessous aident à décompressertar
et à classer leszip
fichiers correctement quel que soit le système d'exploitation d'origine.ATTENTION: il faut régler la source codant manuellement (
cp1251
,cp866
dans les exemples ci - dessous). Les options de ligne de commande peuvent être une bonne solution à l'avenir.Le goudron:
Zip *: français:
UPD 2018-01-02 : J'utilise le
chardet
package pour deviner l'encodage correct du bloc de données brut. Maintenant, le script fonctionne hors de la boîte sur toutes mes mauvaises archives, ainsi que les bonnes.À noter:
chardet
ne fonctionne pas avec un objet Unicode normal).Version finale:
la source
POSIX-1.2001 a spécifié comment TAR utilise UTF-8.
Depuis 2007, la version 6.3.0 du journal des modifications dans PKZIP APPNOTE.TXT ( http://www.pkware.com/documents/casestudies/APPNOTE.TXT ) spécifiait comment ZIP utilise UTF-8.
Ce n'est que les outils qui prennent correctement en charge ces normes, qui reste une question ouverte.
la source