A codificação de nome de arquivo foi alternada para UTF-8 por tar ao descompactar para o compartilhamento do Windows

4

Temos diferentes instalações do Magento (loja virtual) que permitem que imagens sejam adicionadas a um produto livremente. Quando uma imagem é adicionada a um produto, o arquivo é nomeado de uma maneira específica que às vezes incorpora caracteres especiais (por exemplo, umlauts alemão).

No caso em que estou procurando os nomes dos arquivos, eles estão codificados em latin1. Eu posso ver isso fazendo ls em um arquivo, depois lendo o arquivo via vim . Usando o fileencoding=latin1 , os umlauts são exibidos corretamente.

Agora, essas instalações do Magento são submetidas a backup por tar , 7zip e ccrypt (nessa ordem). Descompactá-los no linux dá os mesmos nomes de arquivos na mesma codificação.

Agora temos um compartilhamento em um sistema Windows no qual gostaríamos de colocar a instalação do Untarred do Magento. No entanto, ao descompactar, várias mensagens de erro aparecem em relação aos nomes dos arquivos de trema:

tar: var/magento_webs/customer/media/import/images/12063-sportsto7d4mpfer-hinten.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-kunststoffkotfl4gel-detail-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/14300-fl4gel.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-41kotfl4gel-kunststoff-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/citr6n.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma7e-1.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma7e.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/11076-vorschalld4mpfer.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden

(Isso se traduz em Cannot execute open: File or directory not found )

Agora, olhando para as listas de nomes de arquivos, posso ver que o tar parece tentar criar nomes de arquivos codificados em UTF-8 (\ 337 parece assim). No entanto, o ponto de montagem foi disponibilizado via (a partir de etc/fstab ):

//192.168.0.111/share   /mnt/share      cifs    username=myusername,noperm,sec=ntlm,codepage=cp850       0       0

Não sei por que esses nomes de arquivo não podem ser gravados no compartilhamento de maneira a preservar a codificação do trema. Estou faltando outra opção (a página de código é a opção errada para isso)?

Editar 1: posso recriar algo semelhante por SSHing na caixa linux, definindo o Remote character set da conexão para ISO8859-15 , alterando para o diretório de compartilhamento e touch ing um arquivo com um trema:

touch: kann â4â nicht berÃŒhren: Datei oder Verzeichnis nicht gefunden

(Não é possível tocar no X: arquivo ou diretório não encontrado)

Editar 2: primeira tentativa de solução

Eu adicionei iocharset=utf8 às opções de montagem, remontei o compartilhamento, mas obtive exatamente os mesmos problemas com os mesmos arquivos. Estranhamente, usar mount (que geralmente imprime todos os pontos de montagem das opções foram montados) não imprime a opção iocharset (nem com utf8 nem com cp850 como a configuração).

    
por Dabu 20.12.2013 / 09:40

1 resposta

0

Algum tempo no passado (acredito que entre a versão 2.0 ou mais), o mount.cifs perdeu a opção "codepage=" e colocou tudo na opção "iocharset=".

Você deve estar bem com

//host/share /mnt/share cifs username=blah,noperm,sec=ntlm,iocharset=utf8 0 0
    
por 20.12.2013 / 10:55