我有一个安装了 CentOS 7 的 VPS。我正在尝试将具有希伯来语名称的文件上传到服务器。我尝试通过 FTP (Pure-ftpd) 上传它,我得到:Failed to convert command to 8 bit charset
。我尝试通过 php-upload-page 上传它,它传输的文件没有任何名称(例如,如果文件的名称是שלום.jpg
,它将在服务器上保存为.jpg
。我已经尝试更改区域设置到en_US.utf8
和he_IL.utf8
,但它仍然不起作用。
有人知道该怎么办吗?
编辑: 问题出在 FTP 服务器 (Pure-ftpd) 上。我已经卸载了它并安装了 ProFtp,现在它工作得很好。
答案1
您是如何使用 en_US.utf8/he_IL.utf8 的?
这里你必须注意两件事:
- 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
- FTP客户端
FTP 客户端在上传文件时还应该正确设置此 LANG 环境变量,以便正确编码名称。
您只需执行:
export LANG=en_US.utf8
例如,在通过命令行调用 FTP 客户端之前。
如果客户端和服务器都按照上述方式正确配置,并且您使用的应用程序(在您的情况下是 ftp 服务器和客户端)支持 I18n,那么它很有可能会工作。