J'ai obtenu des fichiers ZIP, qui contiennent des fichiers, dont les noms de fichiers sont dans un certain encodage. Disons que je connais l'encodage de ces noms de fichiers, mais je ne sais toujours pas comment les décompresser correctement.
Voici un exemple de fichier , il contient un fichier "【SSK 字幕 组】 The Vampire Diaries 吸血鬼 日记 S06E12.ass"
Je sais que l'encodage utilisé est GB18030 (chinois)
La question est - comment décompresser ce fichier dans FreeBSD à l'aide de la décompression ou d'un autre utilitaire CLI pour obtenir le nom de fichier encodé approprié? J'ai essayé tout ce que je pouvais, mais le résultat n'a jamais été bon. Veuillez aider.
J'ai essayé sur OSX:
MBP1:test 2ge$ bsdtar xf gb18030.zip
MBP1:test 2ge$ ls
%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12/ gb18030.zip
MBP1:test 2ge$ cd %A1%BESSK%D7%D6Ļ%D7顿The\ Vampire\ Diaries\ %CE%FCѪ%B9%ED%C8ռ%C7S06E12/
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ ls
%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12.ass*
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ find . | iconv -f gb18030 -t utf-8
.
./%A1%BESSK%D7%D6L抬%D7椤縏he Vampire Diaries %CE%FC血%B9%ED%C8占%C7S06E12.ass
MBP1:%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12 2ge$ convmv -r -f gb18030 -t utf-8 --notest .
Skipping, already UTF-8: ./%A1%BESSK%D7%D6Ļ%D7顿The Vampire Diaries %CE%FCѪ%B9%ED%C8ռ%C7S06E12.ass
Ready!
J'ai essayé similaire avec décompresser, mais j'ai un problème similaire.
Merci, essayant maintenant sur BSD GRATUIT, où je me connecte en utilisant SSH depuis OSX (Terminal):
# locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=C
La première chose, je voudrais est de montrer correctement les noms chinois. j'ai changé
setenv LC_ALL zh_CN.GB18030
setenv LANG zh_CN.GB18030
Ensuite, j'ai téléchargé le fichier et essayez de "ls" pour voir les caractères appropriés, mais pas de chance. Je pense donc que je dois résoudre les premiers paramètres régionaux chinois pour vérifier quand j'obtiens un résultat correct, en fait je peux le comparer. Pouvez-vous aussi m'aider s'il vous plait?
unzip
n'a pas cette option dans Mac OS X et crée toujours des noms de fichiers encodés en pourcentage. Launar
suggestion de @ javacom a fonctionné comme un charme.unzip
dit que c'estUnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler
et ne fournit pas de telles options.unzip
dans Debian 9 est exactement la même version et n'a pas de telles options. Probablement spécifique à Ubuntu?Sur la plupart des systèmes de fichiers POSIX, le nom de fichier n'est qu'une série d'octets et il appartient à l'espace utilisateur de le comprendre. Vous pouvez utiliser ça à votre avantage.
Tout d'abord, extrayez l'archive en utilisant
bsdtar
, car l'unzip
outil semble modifier les noms de fichiers, tandis que bsdtar les extraira bruts. (Je teste cela sur Linux. Je suppose que FreeBSD l'appelle simplementtar
.)Vérifiez que des outils comme
iconv
peuvent décoder les noms avec succès:(Notez que cela n'affecte que la
find
sortie, pas les fichiers eux-mêmes.)Enfin, utilisez
convmv
pour convertir les noms de fichiers en UTF-8:(Remarque: j'ai dû installer Encode :: HanExtra à partir du CPAN pour la prise en charge du GB18030 et l' ajouter manuellement
use Encode::HanExtra;
à / usr / bin / convmv même s'il est censéEn cas d'
convmv
indisponibilité, scriptez-le:(Au moins sous Linux, cela présente un avantage car il
iconv
est presque toujours disponible et prend toujours en charge gb18030.)la source
Méthode 1 : utilisez l'utilitaire Unar
Méthode 2 : utilisez un script python pour décompresser le fichier (référence https://gist.github.com/usunyu/dfc6e56af6e6caab8018bef4c3f3d452#file-gbk-unzip-py )
L'exemple gb18030.zip va extraire le fichier suivant
la source
unar
méthode est la plus simple au moins sur Mac OS X.Sous OS X, vous pouvez utiliser une application GUI appelée The Unarchiver . Il peut être installé à l'aide du Mac App Store ou de Homebrew Cask :
Lorsque vous ouvrez un fichier ZIP avec celui-ci, l'application vous permet de choisir l'encodage approprié en utilisant l'aperçu d'un nom de fichier à partir de l'archive.
la source
7z prend en charge l'ID de jeu de caractères avec un commutateur
-scs
, par exemple:où 903 est le jeu de caractères 中文 簡體. Une liste plus longue des ID de jeux de caractères peut être trouvée ici .
la source
7z
-scs
Le commutateur choisit uniquement l'encodage de la@
liste de fichiers définie par.Utilisez 7z pour extraire le fichier
Après cela, convertissez vous-même l'encodage de ces noms de fichiers:
Cela fonctionne pour moi .. from_encoding dans mon cas est tis-620 (qui est un encodage thaï), vous devez trouver un encodage approprié de votre langue. Un populaire résout généralement le problème, mais si le nom du fichier est toujours illisible, essayez de passer de_encoding à d'autres choses telles que windows-1252 ou shift-jis (japonais) ou autre, vous pouvez répertorier l'encodage disponible à l'aide de la commande:
Pour moi, c'est une méthode très simple de "résolution".
la source
je viens d'utiliser 7zip et il a réussi à choisir le bon encodage.
(quelque chose que le zip standard ne pouvait pas faire)
mais je l'ai utilisé sous Windows, avec l'outil GUI. Peut-être que la ligne de commande 7z fonctionnera également pour vous.
la source