gpt4 book ai didi

macos - 将文件传输到 Web 服务器时转换 Unicode 分解

转载 作者:行者123 更新时间:2023-12-02 01:13:39 25 4
gpt4 key购买 nike

我在 OS X 上进行网站开发,并且经常发现自己将实时网站(运行 Linux/LAMP)的某些部分移动到在我自己的计算机上运行的开发服务器。其中一个实例涉及下载图像(用户生成的内容,例如通过 ftp 下载),以一种或另一种方式处理它们,然后将它们放回生产站点。

所涉及的图像文件是在 Linux 计算机中创建的,其文件名似乎是使用 NFC 分解以 UTF-8 编码的。另一方面,OS X 的 HFS+ 文件系统不允许 NFC 分解文件名并转换为 NFD。然而,一旦我完成并想要上传文件,它们的名称现在将使用 NFD 分解,因为 Linux 支持它们。因此,新上传的(在某些情况下是替换的)文件将无法通过预期的 URL 访问。

我正在寻找一种方法来更改文件的 UTF 分解(最好)或之后(convmv 看起来是一个不错的选择,但我没有足够的权限在此服务器上,在这种特殊情况下不可能进行传输,因为我猜不可能事先这样做。我尝试使用传输和 rsync(使用通常使用的部署脚本)进行 FTP 上传,但无济于事。 rsync 中的 --iconv 选项似乎很理想,但不幸的是我运行 rsync 2.6.9 的服务器无法识别它。

我猜很多人都遇到类似的问题,我很高兴听到任何解决方案或解决方法!

更新:在这种情况下,我最终将文件同步到运行 Ubuntu 的虚拟机,在其中运行 convmv,然后再次同步到我的临时服务器。虽然这效果相当好,但有点耗时。也许可以在 OS X 上安装 ext 文件系统,然后使用原始 NFC 分解的文件名将文件存储在那里?

此外,为了避免在将来安装 WordPress 时出现此问题(这是我的用例),您可以添加一个简单的 add_filter('sanitize_file_name', 'remove_accents'); before 上传任何文件就应该没问题。

最佳答案

看来rsync --iconv是最好的解决方案,因为您可以一步完成文件传输和名称转码。您只需要说服您的主机升级他们的 rsync。鉴于 2008 年发布的 rsync 3.0.0 中引入了 --iconv 功能,您的主机仍然运行 rsync 2.6.9 有点奇怪。

如果您无法说服主机安装最新的 rsync,您可以编译自己的 rsync,将其上传到服务器上的某个位置,例如 ~/bin,然后将其添加到系统安装rsync之前的路径。然后您应该能够使用 --iconv 选项。只要您通过 SSH(默认)使用 rsync,而不是 rsync 守护进程,这应该就可以工作;因为通过 SSH 的 rsync 的工作原理是通过 SSH 连接到远程计算机,并使用传递给本地 rsync 的相同选项运行 rsync --server

或者您可以找到一台安装了最新工具和 Perl 的主机。

关于macos - 将文件传输到 Web 服务器时转换 Unicode 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12643402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com