Eu quero extrair um grande backup do meu disco rígido comprimido com 7zip no Windows para a minha instalação Debian Wheezy. Eu estou usando a seguinte linha de comando:
7z x -pmypasswordhere file.7z
Se há agora um arquivo ou uma pasta chamada Äpfel (Alemão para maçãs) o resultado no disco rígido do Linux é ¤pfel .
Como posso resolver este problema? Eu tentei usar o seguinte, mas isso diz que a linha de comando é inválida:
7z x -scsWIN -pmypasswordhere file.7z
...onde o -scs
switch é explicado como: "-scs {UTF-8 | WIN | DOS}: define o conjunto de caracteres para arquivos de lista".
Eu tenho comprimido o arquivo no Windows 8 em uma partição NTFS com 7z 9,30 64 bits. As opções foram a força de compressão é Ultra . Eu criptografei nomes de arquivos e seus conteúdos com o AES-265. Minha instalação Debian Wheezy é alemão, então echo $ LANG é "de_DE.UTF-8".
Äpfel.txt
com corrente7-zip
(9,20) sob as janelas; obtê-lo dehttp://download.mpy.de/apples.7z
. Eu não tenho nenhum problema com uma antiga versão linux do 7z (4.57, datada de 2007) nem com a versão 9.04 (do debian squeeze?). Em ambos os casosÄpfel.txt
é extraído corretamente. A sequência de código do idioma (locale=de_DE.UTF-8
) dado por 7z quando iniciado sem argumentos está correto no seu caso? O queecho $LANG
dizer?scp
em vez disso, ou montar um compartilhamento do Windows?Respostas:
Para que "äpfel" se torne "äpfel", seria necessário obter o äpfel {UTF-8} e convertê-lo usando ISO-8859-15 para UTF8. Então você obteria o ¤pfel {UTF-8}.
Então, como isso pode acontecer? (Parece não haver ISO-8859-1 [5] (Latin1) no seu fluxo de trabalho).
Eu acredito que eu poderia reproduzir isso em uma partição VFAT ou NTFS usando o
mount
iocharset=value
opção. Se eu configurá-lo para ISO-8859-15 e tiver uma localidade de UTF-8, então talvez o sistema pode ser induzido a converter nomes de arquivos "na direção errada".Mas aqui, a sua instalação Wheezy é mais provável
ext3
e não estou ciente de uma opção NLS para ext3.Outra possibilidade é que os arquivos sejam realmente criado corretamente e você é apenas vendo eles estão errados:
Eu noto outra coisa estranha: seus dois arquivos de maçã, o de 16:10 e o de 16:34, parecem ser exibidos por
ls
usando dois formatos de data diferentes. Em um caso, o ano é especificado.Pode ser que 7z esteja criando uma entrada inode ligeiramente incomum?
Contudo, Aqui é um truque usando
convmv
utilitário que pode ser de ajuda.fonte
convmv
em uma pequena amostra de arquivos.o
-scs
opção é apenas para @listfiles que parece ser um arquivo contendo uma lista de nomes de arquivos. Isso não afetará o conjunto de caracteres de seus nomes de arquivos.Uma solução possível seria executar
iconv
com opções apropriadas contra todos os seus arquivos depois de você os extraiu.fonte
Depois de extrair o arquivo, basta renomeá-lo via mv ou seu navegador de arquivos, não vai doer.
Para renomear arquivos em massa, se você for forçado a fazer isso, poderá usar find (com -exec) ou krename.
fonte