Saya mendapatkan file ZIP, yang berisi file, nama file mana yang ada dalam beberapa penyandian. Katakanlah saya tahu penyandian nama file itu, tapi saya masih tidak tahu cara mendekompresnya dengan benar.
Berikut adalah contoh file , ini berisi satu file "【SSK 字幕 组】 The Vampire Diaries 吸血鬼 日记 S06E12.ass"
Saya tahu penyandian yang digunakan adalah GB18030 (Bahasa Cina)
Pertanyaannya adalah - bagaimana cara membongkar file itu di FreeBSD menggunakan unzip atau utilitas CLI lainnya untuk mendapatkan nama file yang disandikan? Saya mencoba semua yang saya bisa, tetapi hasilnya tidak pernah baik. Tolong bantu.
Saya mencoba di 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!
Saya mencoba mirip dengan unzip, tetapi saya mendapatkan masalah yang sama.
Terima kasih, sekarang mencoba BSD GRATIS, tempat saya terhubung menggunakan SSH dari 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
Hal pertama yang ingin saya lakukan adalah menunjukkan nama-nama Tionghoa yang benar. aku berubah
setenv LC_ALL zh_CN.GB18030
setenv LANG zh_CN.GB18030
Kemudian saya mengunduh file dan mencoba "ls" untuk melihat karakter yang tepat, tetapi tidak beruntung. Jadi saya pikir saya harus menyelesaikan lokal China pertama untuk memverifikasi ketika saya mendapatkan hasil yang tepat, sebenarnya saya bisa membandingkannya. Bisakah Anda membantu saya dengan ini?
unzip
tidak memiliki opsi ini di Mac OS X dan selalu membuat nama file yang dikodekan persen. Saran @ javacomunar
bekerja sebagai pesona.unzip
mengatakan ituUnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler
dan tidak memberikan opsi seperti itu.unzip
in Debian 9 persis versi yang sama dan tidak memiliki opsi seperti itu. Mungkin spesifik Ubuntu?Pada kebanyakan sistem file POSIX, nama file hanya serangkaian byte dan terserah ruang pengguna untuk memahaminya. Anda dapat menggunakan ini untuk keuntungan Anda.
Pertama, ekstrak arsip menggunakan
bsdtar
, karenaunzip
alat ini tampaknya memotong-motong nama file, sementara bsdtar akan mengekstraknya mentah. (Saya sedang menguji ini di Linux. Saya kira FreeBSD hanya menyebutnyatar
.)Verifikasi bahwa alat seperti
iconv
berhasil dapat memecahkan kode nama:(Perhatikan bahwa ini hanya memengaruhi
find
output, bukan file itu sendiri.)Terakhir digunakan
convmv
untuk mengonversi nama file ke UTF-8:(Catatan: Saya harus menginstal Encode :: HanExtra dari CPAN untuk dukungan GB18030, dan secara manual menambahkan
use Encode::HanExtra;
ke / usr / bin / convmv meskipun seharusnyaDalam hal
convmv
tidak tersedia, skrip:(Setidaknya di Linux, ini memiliki keunggulan karena
iconv
hampir selalu tersedia, dan selalu mendukung gb18030.)sumber
Metode 1 : gunakan utilitas unar
Metode 2 : Gunakan skrip python untuk unzip file (referensi https://gist.github.com/usunyu/dfc6e56af6e6caab8018bef4c3f3d452#file-gbk-unzip-py )
Contoh gb18030.zip akan mengekstrak file berikut
sumber
unar
metode ini paling tidak merepotkan, setidaknya di Mac OS X.Pada OS X, Anda dapat menggunakan aplikasi GUI yang disebut The Unarchiver . Ini dapat diinstal menggunakan Mac App Store atau Homebrew Cask :
Saat Anda membuka file ZIP dengannya, aplikasi memungkinkan Anda memilih pengodean yang sesuai menggunakan pratinjau nama file dari arsip.
sumber
7z mendukung ID charset dengan sakelar
-scs
, mis .:di mana 903 adalah charset 中文 簡體. Daftar ID charset yang lebih panjang dapat ditemukan di sini .
sumber
7z
-scs
switch hanya memilih pengodean dari@
daftar file -defined.Gunakan 7z untuk mengekstrak file
Setelah itu, konversi sendiri pengkodean nama file tersebut:
Ini berfungsi untuk saya .. from_encoding dalam kasus saya adalah tis-620 (yang merupakan pengkodean Thailand), Anda perlu menemukan pengkodean yang sesuai dari bahasa Anda. Yang populer biasanya menyelesaikan masalah tetapi jika nama file masih belum dapat dibaca maka cobalah mengubah from_encoding ke hal-hal lain seperti windows-1252 atau shift-jis (Jepang) atau apa pun, Anda dapat mendaftar pengkodean yang tersedia menggunakan perintah:
Ini adalah metode "cara mengatasi" yang sangat sederhana bagi saya.
sumber
Saya hanya menggunakan 7zip dan berhasil memilih penyandian yang tepat.
(sesuatu yang tidak bisa dilakukan zip standar)
tetapi menggunakannya pada Windows, dengan alat GUI. Mungkin baris perintah 7z akan bekerja untuk Anda juga.
sumber