Saya ingin mengekstrak cadangan besar hard drive saya yang dikompresi dengan 7zip di Windows ke instalasi Debian Wheezy saya. Saya menggunakan baris perintah berikut:
7z x -pmypasswordhere file.7z
Jika sekarang ada file atau folder bernama Äpfel (Bahasa Jerman untuk apel), hasilnya pada hard drive Linux adalah äpfel .
Bagaimana saya bisa mengatasi masalah ini? Saya mencoba menggunakan yang berikut ini, tetapi ini mengatakan bahwa baris perintah tidak valid:
7z x -scsWIN -pmypasswordhere file.7z
... di mana -scs
saklar dijelaskan sebagai: "-scs {UTF-8 | WIN | DOS}: set charset untuk daftar file".
Saya telah mengompres file pada Window 8 pada partisi NTFS dengan 7z 9,30 64bit. Pilihannya adalah kekuatan kompresi Ultra . Saya telah mengenkripsi nama file dan isinya dengan AES-265. Instalasi Debian Wheezy saya adalah bahasa Jerman, jadi echo $ LANG adalah "de_DE.UTF-8".
Äpfel.txt
dengan saat ini7-zip
(9.20) di bawah windows; mendapatkannya darihttp://download.mpy.de/apples.7z
. Saya tidak punya masalah dengan versi linux kuno 7z (4,57, tanggal 2007) atau dengan versi 9.04 (dari debian squeeze?). Dalam kedua kasusÄpfel.txt
diekstraksi dengan benar. Apakah string lokal (locale=de_DE.UTF-8
) yang diberikan oleh 7z ketika dimulai tanpa argumen sudah benar dalam kasus Anda? Apa yangecho $LANG
dikatakan?scp
atau me-mount berbagi windows?Jawaban:
Agar "äpfel" menjadi "äpfel", Anda perlu mendapatkan äpfel {UTF-8} dan mengonversinya menggunakan ISO-8859-15 ke UTF8. Maka Anda akan mendapatkan äpfel {UTF-8}.
Jadi bagaimana ini bisa terjadi? (Tampaknya tidak ada ISO-8859-1 [5] (Latin1) dalam alur kerja Anda).
Saya percaya saya bisa mereproduksi ini pada partisi VFAT atau NTFS menggunakan
mount
iocharset=value
opsi. Jika saya mengaturnya ke ISO-8859-15 dan memiliki lokal UTF-8, maka mungkin sistem bisa diakali untuk mengkonversi nama file "ke arah yang salah".Tapi di sini, instalasi Wheezy Anda kemungkinan besar
ext3
, dan saya tidak mengetahui opsi NLS untuk ext3.Kemungkinan lain adalah bahwa file-file tersebut sebenarnya dibuat dengan benar , dan Anda hanya melihatnya salah:
Saya perhatikan hal aneh lainnya: dua file apel Anda, satu di 16:10 dan satu di 16:34, tampaknya ditampilkan dengan
ls
menggunakan dua format tanggal yang berbeda. Dalam satu kasus, tahun ditentukan.Mungkin 7z membuat entri inode yang sedikit tidak biasa?
Namun, di sini ada trik menggunakan
convmv
utilitas yang mungkin bisa membantu.sumber
convmv
pada sampel file kecil.The
-scs
pilihan adalah hanya untuk @listfiles yang tampaknya menjadi sebuah file yang berisi daftar nama file. Ini tidak akan memengaruhi charset nama file Anda.Salah satu solusi yang mungkin akan dijalankan
iconv
dengan opsi yang sesuai terhadap semua file Anda setelah Anda mengekstraknya.sumber
Setelah mengekstraksi file, cukup ganti namanya melalui mv atau browser file Anda, tidak ada salahnya.
Untuk mengganti nama file massal, jika Anda terpaksa melakukannya, Anda bisa menggunakan find (with -exec), atau krename.
sumber