Maison >Opération et maintenance >exploitation et maintenance Linux >Comment résoudre le problème des caractères tronqués lors de la décompression de fichiers zip sous Linux ?

Comment résoudre le problème des caractères tronqués lors de la décompression de fichiers zip sous Linux ?

零下一度
零下一度original
2017-07-18 14:02:102271parcourir

Comme le format d'encodage n'est pas spécifié dans le format zip, l'encodage dans les fichiers zip générés sous Windows est GBK/GB2312, etc. Par conséquent, ces fichiers zip auront des caractères tronqués lorsqu'ils seront décompressés sous Linux, car l'encodage par défaut sous Linux est UTF8.

Il existe actuellement une méthode de décompression -O cp936 qui circule sur Internet, mais certaines décompressions n'ont pas l'option -O.

La version que j'utilise, la version unzip 6.0 modifiée par Debian, a cette option

En raison de problèmes d'encodage, les fichiers chinois dans le fichier zip apparaîtront tronqués lorsqu'ils seront décompressés sous Linux

Si vous utilisez archlinux, utilisez AUR pour installer unzip-natspec afin de résoudre ce problème

À ce stade, utilisez unzip xxx.zip pour décompresser correctement le fichier

puis faites-le fonctionner dans le gestionnaire d'archives file-roller, chinois Le nom est toujours tronqué On dit que c'est parce que file-roller utilise préférentiellement p7zip

Le problème est résolu après la suppression de p7zip

Cependant, je Je souhaite également pouvoir utiliser le progiciel p7zip en même temps. Quelqu'un sait-il comment résoudre ce problème ?

Téléchargez le code à partir d'ici pour étudier et trouver une telle logique

    /* give priority to 7z, unzip and zip that supports ZIP files better. */if ((strcmp (mime_type, "application/zip") == 0)|| (strcmp (mime_type, "application/x-cbz") == 0))
    {if (_g_program_is_available ("7z", check_command)) {return capabilities;
        }if (!_g_program_is_available ("unzip", check_command)) {
            capabilities |= FR_ARCHIVE_CAN_READ;
        }if (!_g_program_is_available ("zip", check_command)) {
            capabilities |= FR_ARCHIVE_CAN_WRITE;
        }return capabilities;
    }

Il semble qu'il n'y ait pas de bon moyen sauf de patcher le. code

Solution finale, j'ai trouvé qu'il existe également un package logiciel similaire p7zip-natspec dans AUR

L'installation de ce package devrait parfaitement résoudre le problème, car j'ai résolu le problème en utilisant la méthode ci-dessus , je n'essaierai pas ça

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn