Codificação de nome de arquivo alterada para UTF-8 por tar ao descompactar para compartilhamento do Windows

Codificação de nome de arquivo alterada para UTF-8 por tar ao descompactar para compartilhamento do Windows

Temos diversas instalações Magento (loja virtual) que permitem adicionar imagens gratuitamente a um produto. Quando uma imagem é adicionada a um produto, o arquivo é nomeado de uma forma específica que às vezes incorpora caracteres especiais (por exemplo, tremas alemães).

No único caso que estou investigando, os nomes dos arquivos estão codificados em latin1. Posso ver isso inserindo lsum arquivo e depois lendo o arquivo via vim. Usando o fileencoding=latin1, os tremas são exibidos corretamente.

Agora, essas instalações do Magento são apoiadas por tare 7zip( ccryptnessa ordem). Descompactar aqueles no Linux fornece os mesmos nomes de arquivos na mesma codificação.

Agora temos um compartilhamento em um sistema Windows onde gostaríamos de colocar a instalação não tarred do Magento. No entanto, durante a descompactação, uma série de mensagens de erro aparecem em relação aos nomes dos arquivos com trema:

tar: var/magento_webs/customer/media/import/images/12063-sportsto\337d\344mpfer-hinten.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-kunststoffkotfl\374gel-detail-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/14300-fl\374gel.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/15240-41kotfl\374gel-kunststoff-vorne.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/citr\366n.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma\337e-1.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/2cv6-ma\337e.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden
tar: var/magento_webs/customer/media/import/images/11076-vorschalld\344mpfer.jpg: Kann open nicht ausführen: Datei oder Verzeichnis nicht gefunden

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

Agora, olhando as listas de nomes de arquivos tar, posso ver que tar parece tentar criar nomes de arquivos codificados em UTF-8 (\337 parece assim). No entanto, o ponto de montagem foi disponibilizado via (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 uma forma que preserve a codificação do trema. Estou faltando outra opção (a página de código é a opção errada para isso)?

Edição 1: posso recriar algo semelhante fazendo SSH na caixa do Linux, definindo a Remote character setconexão como ISO8859-15, mudando para o diretório de compartilhamento e touchexecutando um arquivo com trema:

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

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

Edição 2: primeira tentativa de solução

Adicionei iocharset=utf8as opções de montagem, remontei o compartilhamento, mas tive exatamente os mesmos problemas com os mesmos arquivos. Estranhamente, using mount(que geralmente imprime todas as opções com as quais os pontos de montagem foram montados) não imprime a iocharsetopção (nem with utf8nem with cp850como configuração).

Responder1

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

Você deveria estar bem com

//host/share /mnt/share cifs username=blah,noperm,sec=ntlm,iocharset=utf8 0 0

informação relacionada