La codificación del nombre de archivo cambió a UTF-8 mediante tar al descomprimir el recurso compartido de Windows

La codificación del nombre de archivo cambió a UTF-8 mediante tar al descomprimir el recurso compartido de Windows

Disponemos de diferentes instalaciones de Magento (tienda web) que permite añadir imágenes a un producto libremente. Cuando se agrega una imagen a un producto, el archivo recibe un nombre específico que a veces incorpora caracteres especiales (por ejemplo, diéresis alemanas).

En el único caso que estoy investigando actualmente, los nombres de archivos están codificados en latin1. Puedo ver eso ingresando lsun archivo y luego leyendo el archivo a través de vim. Al utilizar fileencoding=latin1, las diéresis se muestran correctamente.

Ahora, estas instalaciones de Magento están respaldadas por tary 7zip( ccrypten ese orden). Al descomprimirlos en Linux se obtienen los mismos nombres de archivo en la misma codificación.

Ahora tenemos un recurso compartido en un sistema Windows en el que nos gustaría instalar la instalación de Magento sin descomprimir. Sin embargo, al desmarcar, aparecen varios mensajes de error con respecto a los nombres de los archivos con diéresis:

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

(Se traduce aproximadamente como Cannot execute open: File or directory not found)

Ahora, mirando las listas tar de nombres de archivos, puedo ver que tar parece intentar crear nombres de archivos codificados en UTF-8 (\337 se ve de esa manera). Sin embargo, el punto de montaje está disponible a través de (desde etc/fstab):

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

No estoy seguro de por qué estos nombres de archivos no se pueden escribir en el recurso compartido de una manera que conserve la codificación de diéresis. ¿Me falta otra opción (la página de códigos es la opción incorrecta para esto)?

Edición 1: puedo recrear algo similar haciendo SSH en el cuadro de Linux, configurando la Remote character setconexión en ISO8859-15, cambiando al directorio compartido e touchingresando un archivo con diéresis:

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

(No se puede tocar X: archivo o directorio no encontrado)

Edición 2: primer intento de una solución

Agregué iocharset=utf8las opciones de montaje, volví a montar el recurso compartido, pero tuve exactamente los mismos problemas con los mismos archivos. Por extraño que parezca, usar mount(que generalmente imprime todas las opciones con las que se han montado los puntos de montaje) no imprime la iocharsetopción (ni con utf8ni con cp850como configuración).

Respuesta1

En algún momento pasado (creo que entre la versión 2.0 o algo así), mount.cifs perdió la opción "codepage=" y puso todo en la opción "iocharset=".

Deberías estar bien con

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

información relacionada