Atualmente, o tar codifica os nomes de arquivos em UTF
Na verdade, o tar não codifica / decodifica nomes de arquivos, simplesmente os copia do sistema de arquivos como está. Se o seu código do idioma for baseado em UTF-8 (como em muitas distros modernas do Linux), será UTF-8. Infelizmente, a página de código do sistema de uma caixa do Windows nunca é UTF-8; portanto, os nomes sempre serão alterados, exceto em ferramentas como o WinRAR, que permitem alterar o conjunto de caracteres usado.
Portanto, é impossível criar um arquivo ZIP com nomes de arquivos não ASCII que funcionem nos lançamentos do Windows em diferentes países e em seu suporte incorporado a pastas compactadas.
É uma falta dos formatos tar e zip que não há informações de codificação fixas ou fornecidas, portanto, caracteres não ASCII sempre serão não portáveis. Se você precisar de um formato de arquivo não ASCII, precisará usar um dos formatos mais recentes, como o 7z recente ou o rar. Infelizmente estes ainda são vacilantes; no 7zip, você precisa da -mcu
opção, e o rar ainda não usará UTF-8, a menos que detecte caracteres que não estão na página de códigos.
Basicamente, é uma bagunça horrível e, se você puder evitar a distribuição de arquivos contendo nomes de arquivos com caracteres não ASCII, ficará muito melhor.
Aqui está um script Python simples que eu escrevi para descompactar arquivos tar do UNIX no Windows:
fonte
O problema, usando no Linux o padrão
tar
(tar GNU), foi resolvido ... adicionando o--format=posix
parâmetro ao criar o arquivo.Por exemplo:
tar --format=posix -cf
No Windows, para extrair os arquivos, eu uso o bsdtar .
Em https://lists.gnu.org/archive/html/bug-tar/2005-02/msg00018.html , está escrito (desde 2005 !!):
PS Em vez de digitar,
--format=posix
você pode digitar-H pax
, que é mais curto.fonte
Acredito que você esteja tendo problemas com o próprio formato do contêiner Zip. O alcatrão pode estar sofrendo do mesmo problema.
Use os formatos de arquivo 7zip (
.7z
) ou RAR (.rar
). Ambos estão disponíveis para Windows e Linux; op7zip
software lida com os dois formatos.Eu apenas testada criando
.7z
,.rar
,.zip
, e.tar
arquivos no WinXP e Debian 5, eo.7z
e.rar
armazenar arquivos / restaurar nomes de arquivo corretamente, enquanto o.zip
e.tar
arquivos não. Não importa qual sistema é usado para criar o arquivo de teste.fonte
Eu tive problemas com a descompactação
tar
e oszip
arquivos que recebo dos usuários do Windows. Embora eu não responda à pergunta "como criar o arquivo que funcionará", os scripts abaixo ajudam a descompactartar
ezip
arquivos corretamente, independentemente do sistema operacional original.ATENÇÃO: uma tem a sintonizar a codificação da fonte manualmente (
cp1251
,cp866
nos exemplos abaixo). As opções de linha de comando podem ser uma boa solução no futuro.Alcatrão:
Fecho eclair:
UPD 2018-01-02 : Eu uso o
chardet
pacote para adivinhar a codificação correta do pedaço bruto de dados. Agora, o script funciona imediatamente em todos os meus arquivos defeituosos, bem como nos bons.Coisas a serem observadas:
chardet
não funciona com um objeto unicode normal).Versão final:
fonte
O POSIX-1.2001 especificou como o TAR usa o UTF-8.
A partir de 2007, o changelog versão 6.3.0 no PKZIP APPNOTE.TXT ( http://www.pkware.com/documents/casestudies/APPNOTE.TXT ) especificou como o ZIP usa o UTF-8.
São apenas as ferramentas que suportam esses padrões adequadamente, que permanece uma questão em aberto.
fonte