CentOs 7 上的希伯来语 (Unicode) 文件名支持

CentOs 7 上的希伯来语 (Unicode) 文件名支持

我有一个安装了 CentOS 7 的 VPS。我正在尝试将具有希伯来语名称的文件上传到服务器。我尝试通过 FTP (Pure-ftpd) 上传它,我得到:Failed to convert command to 8 bit charset。我尝试通过 php-upload-page 上传它,它传输的文件没有任何名称(例如,如果文件的名称是שלום.jpg,它将在服务器上保存为.jpg。我已经尝试更改区域设置到en_US.utf8he_IL.utf8,但它仍然不起作用。

有人知道该怎么办吗?

编辑: 问题出在 FTP 服务器 (Pure-ftpd) 上。我已经卸载了它并安装了 ProFtp,现在它工作得很好。

答案1

您是如何使用 en_US.utf8/he_IL.utf8 的?

这里你必须注意两件事:

  1. FTP服务器

FTP 服务器由用户运行。您必须确保它在运行时在其环境变量中定义了 LANG=en_US.utf8 或 LANG=he_IL.utf8 。

您可以通过执行来检查它

grep -aPo 'LANG=[^=]+' /proc/{pid}/environ

其中 {pid} 是 FTP 服务器的进程 ID(您可能是 root 来执行此命令)。

在 Linux 中,通常要求在可执行文件的上下文中定义此变量,以使其支持 I18n。

如果没有正确定义,那么您有多种选择:

A。修改分配给该 FTP 服务器的用户的 .bashrc:

export LANG=en_US.utf8

并重新启动系统。

b.更直接的是,直接在FTP服务器的启动脚本中添加这个环境变量定义

export LANG=en_US.utf8

  1. FTP客户端

FTP 客户端在上传文件时还应该正确设置此 LANG 环境变量,以便正确编码名称。

您只需执行:

export LANG=en_US.utf8

例如,在通过命令行调用 FTP 客户端之前。

如果客户端和服务器都按照上述方式正确配置,并且您使用的应用程序(在您的情况下是 ftp 服务器和客户端)支持 I18n,那么它很有可能会工作。

相关内容