我们有不同的 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
我不确定为什么这些文件名不能以保留变音符号编码的方式写入共享。我是否遗漏了其他选项(代码页是否是错误的选项)?
编辑 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