Maison >Opération et maintenance >exploitation et maintenance Linux >Partagez la solution au problème des caractères tronqués lors de la décompression de fichiers zip sous Linux

Partagez la solution au problème des caractères tronqués lors de la décompression de fichiers zip sous Linux

黄舟
黄舟original
2017-06-02 10:25:192943parcourir

Cet article présente principalement comment résoudre le problème de la décompression des fichiers zip sous linuxcaractères tronqués Il a une certaine valeur de référence à laquelle les amis intéressés peuvent se référer. ça. une fois.

Cause

Le format zip ne précisant pas le format d'encodage, l'encodage dans le fichier zip généré sous Windows est GBK/GB2312, etc., ce qui fait que ces fichiers zip apparaissent tronqués lorsqu'ils sont décompressés sous Linux, car le codage par défaut sous Linux est UTF8.

Solution 1

Utilisez 7z pour décompresser.

Installerp7zip et convmv

# fedora
$ su -c 'yum install p7zip convmv'
# ubuntu
$ sudo apt-get install p7zip convmv

Exécuter la commande pour décompresser

# 使用7z解压缩
$ LANG=C 7za x your-zip-file.zip
# 递归转码
$ convmv -f GBK -t utf8 --notest -r .

Solution 2

Les fichiers compressés sous Windows utilisent le codage chinois par défaut du système pour compresser les fichiers. Étant donné que le fichier zip ne déclare pas son encodage, le décompression sous Linux est généralement décompressé avec l'encodage par défaut et le nom du fichier chinois sera tronqué.

Bien que quelqu'un ait signalé cela comme un bug en 2005, le site officiel d'info-zip n'incluait pas la reconnaissance automatique de l'encodage dans le plan. Peut-être qu'ils ne pensaient pas que c'était un problème. Sun a adopté la même approche face au problème du codage zip qui existe en Java depuis N ans.

Il existe 2 façons de résoudre le problème :

1. Décompressez via la commande de ligne de décompression, spécifiez le jeu de caractères
<.>

unzip -O CP936 xxx.zip (GBK, GB18030 peuvent également être utilisés)


Ce qui est intéressant, c'est qu'il n'y a pas de description de cette option dans le manuel de décompression, et décompressez -- help a une ligne simple pour illustrer ce paramètre.

2. Dans la variable d'environnement

, spécifiez le paramètre de décompression, et affichez et décompressez toujours le fichier dans le jeu de caractères spécifié

Ajoutez 2 à /etc. /environment Line

UNZIP="-O CP936"
ZIPINFO="-O CP936"
afin que le gestionnaire de fichiers d'archives du bureau Gnome (file-roller) puisse utiliser unzip pour décompresser le chinois normalement, mais file-roller lui-même ne peut pas définir l'encodage à transmettre pour décompresser.

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