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 ls
un 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 tar
y 7zip
( ccrypt
en 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 set
conexión en ISO8859-15
, cambiando al directorio compartido e touch
ingresando 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=utf8
las 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 iocharset
opción (ni con utf8
ni con cp850
como 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