Obtuve archivos ZIP, que contienen archivos, cuyos nombres están en alguna codificación. Digamos que sé la codificación de esos nombres de archivo, pero todavía no sé cómo descomprimirlos correctamente.
Aquí hay un archivo de ejemplo , contiene un archivo "【SSK 字幕 组】 The Vampire Diaries 吸血鬼 日记 S06E12.ass"
Sé que la codificación utilizada es GB18030 (chino)
La pregunta es: ¿cómo descomprimir ese archivo en FreeBSD usando descomprimir u otra utilidad CLI para obtener el nombre de archivo codificado adecuado? Intenté todo lo que pude, pero el resultado nunca fue bueno. Por favor ayuda.
Intenté en 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!
Intenté algo similar con descomprimir, pero me sale un problema similar.
Gracias, ahora estoy probando BSD GRATUITO, donde me estoy conectando usando SSH desde 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
Lo primero que me gustaría es mostrar correctamente los nombres chinos. Cambié
setenv LC_ALL zh_CN.GB18030
setenv LANG zh_CN.GB18030
Luego descargué el archivo e intenté "ls" para ver los caracteres correctos, pero no tuve suerte. Así que creo que tengo que resolver el primer idioma chino para verificar cuando obtengo el resultado adecuado, en realidad puedo compararlo. ¿Me pueden ayudar también con esto?
unzip
no tiene esta opción en Mac OS X y siempre crea nombres de archivo con codificación porcentual. Launar
sugerencia de @javacom funcionó de maravilla .unzip
dice que esUnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler
y no proporciona tales opciones.unzip
en Debian 9 es exactamente la misma versión y no tiene tales opciones. ¿Probablemente Ubuntu específico?En la mayoría de los sistemas de archivos POSIX, el nombre de archivo es solo una serie de bytes y depende del espacio del usuario darle sentido. Puedes usar esto a tu favor.
Primero, extraiga el archivo usando
bsdtar
, ya que launzip
herramienta parece alterar los nombres de los archivos, mientras que bsdtar los extraerá sin procesar. (Estoy probando esto en Linux. Supongo que FreeBSD simplemente lo llamatar
).Verifique que herramientas como
iconv
pueden decodificar con éxito los nombres:(Tenga en cuenta que esto solo afecta a la
find
salida, no a los archivos).Finalmente, use
convmv
para convertir los nombres de archivo a UTF-8:(Nota: tuve que instalar Encode :: HanExtra de CPAN para el soporte GB18030 y agregarlo manualmente
use Encode::HanExtra;
a / usr / bin / convmv aunque se supone que debeEn caso de
convmv
que no esté disponible, escríbalo:(Al menos en Linux, tiene la ventaja de que
iconv
casi siempre está disponible y siempre es compatible con gb18030).fuente
Método 1 : use la utilidad unar
Método 2 : utilice un script de Python para descomprimir el archivo (consulte https://gist.github.com/usunyu/dfc6e56af6e6caab8018bef4c3f3d452#file-gbk-unzip-py )
El ejemplo gb18030.zip extraerá el siguiente archivo
fuente
unar
método es el más sencillo al menos en Mac OS X.En OS X, puede usar una aplicación GUI llamada The Unarchiver . Se puede instalar usando Mac App Store o Homebrew Cask :
Cuando abre un archivo ZIP con él, la aplicación le permite elegir la codificación adecuada mediante la vista previa de un nombre de archivo del archivo.
fuente
7z admite ID de juego de caracteres con un interruptor
-scs
, por ejemplo:donde 903 es 中文 簡體 charset. Puede encontrar una lista más larga de ID de juego de caracteres aquí .
fuente
7z
-scs
El interruptor elige solo la codificación de la@
lista de archivos definidos.Usa 7z para extraer el archivo
Después de eso, convierta la codificación de esos nombres de archivo usted mismo:
Esto funciona para mí ... from_encoding en mi caso es tis-620 (que es una codificación tailandesa), necesita encontrar una codificación adecuada de su idioma. Una popular generalmente resuelve el problema, pero si el nombre del archivo aún no se puede leer, intente cambiar de_coding a otras cosas como windows-1252 o shift-jis (japonés) o lo que sea, puede enumerar la codificación disponible usando el comando:
Este es un método muy simple de "cómo resolverlo" para mí.
fuente
Acabo de usar 7zip y logró elegir la codificación correcta.
(algo que el zip estándar no podía hacer)
pero lo usé en Windows, con la herramienta GUI. Tal vez la línea de comando 7z también funcione para usted.
fuente