У нас есть различные установки Magento (интернет-магазин), которые позволяют свободно добавлять изображения к продукту. Когда изображение добавляется к продукту, файлу присваивается определенное имя, которое иногда включает специальные символы (например, немецкие умлауты).
В одном случае, который я сейчас изучаю, имена файлов закодированы в latin1. Я могу это увидеть, выполнив вход ls
в файл, а затем прочитав файл через vim
. Используя fileencoding=latin1
, умляуты отображаются правильно.
Теперь эти установки Magento резервируются tar
, 7zip
и ccrypt
(именно в таком порядке). Распаковка их на Linux дает те же имена файлов в той же кодировке.
Теперь у нас есть общий ресурс в системе Windows, куда мы хотим поместить распакованную установку Magento. Однако при распаковке появляется ряд сообщений об ошибках, связанных с именами файлов с умлаутами:
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
(Это примерно переводится как Cannot execute open: File or directory not found
)
Теперь, глядя на списки файлов tar, я вижу, что tar, похоже, пытается создать имена файлов в кодировке UTF-8 (\337 выглядит именно так). Однако точка монтирования была сделана доступной через (из etc/fstab
):
//192.168.0.111/share /mnt/share cifs username=myusername,noperm,sec=ntlm,codepage=cp850 0 0
Я не уверен, почему эти имена файлов не могут быть записаны в общий ресурс таким образом, чтобы сохранить кодировку умляутов. Я упускаю другой вариант (неправильный ли вариант codepage для этого)?
Правка 1: Я могу воссоздать нечто подобное, подключившись по SSH к Linux-компьютеру, установив Remote character set
соединение на ISO8859-15
, перейдя в общий каталог и touch
создав файл с умлаутом:
touch: kann â\244â nicht berÃŒhren: Datei oder Verzeichnis nicht gefunden
(Невозможно нажать X: файл или каталог не найден)
Редактировать 2: Первая попытка решения
Я добавил iocharset=utf8
в параметры монтирования, перемонтировал общий ресурс, но получил те же самые проблемы с теми же файлами. Как ни странно, использование mount
(которое обычно выводит все параметры, с которыми были смонтированы точки монтирования) не выводит параметр iocharset
(ни с, utf8
ни с cp850
как параметром).
решение1
Некоторое время назад (кажется, где-то между версией 2.0) в mount.cifs пропала опция «codepage=", и все было помещено в опцию «iocharset=".
У вас все должно быть в порядке.
//host/share /mnt/share cifs username=blah,noperm,sec=ntlm,iocharset=utf8 0 0