【问题标题】:Unicode names of uploaded files will be removed上传文件的 Unicode 名称将被删除
【发布时间】:2012-10-02 15:58:02
【问题描述】:

我正在上传带有 unicode 名称的文件。上传后我看到一个没有名称的文件,实际上上传文件的 unicode 名称将被删除。为什么?以及如何解决?

我正在使用 ftp (php) 上传,拉丁字母文件名没有问题。

谢谢

【问题讨论】:

  • 您的服务器文件系统是否支持 unicode 名称?
  • @MarkBaker,我如何定义我的服务器文件系统是否支持 unicode 名称?
  • 告诉我们您正在使用的操作系统和文件系统类型可能有助于我们回答这个问题
  • @MarkBaker,操作系统是 CentOS 5.8,我会尽快告诉你文件系统类型。
  • @MarkBaker,他们问我你的意思是我们使用的是什么文件系统类型? .我对他们说什么?

标签: php unicode upload filenames


【解决方案1】:

我想你的文件系统不支持 unicode 名称

您应该考虑剥离 unicode 字母或以其他方式对其进行编码

urlencode() 可能是一个廉价的黑客攻击

【讨论】:

    【解决方案2】:

    这取决于具体的客户端和服务器实现、它们运行的​​操作系统以及操作系统的配置方式等...

    例如,客户端可能是使用 UTF-8 的 linux,而服务器在 Windows 上运行并且不太可能处理 UTF-8 文件名,或者客户端可能是 Windows,试图将 Unicode 文件名转换为一些可以'当服务器在期望 UTF-8 的 Linux 上时处理它。

    您只需要了解相关因素或找到可以亲自交谈的人,因为在查看案件的所有细节时,排除故障可能会涉及很多来回。

    【讨论】:

    • 如何定义我的服务器文件系统是否支持 unicode 名称?
    • 几乎所有文件系统都支持 Unicode 名称。 Windows 的本机文件访问 API 使用 UTF-16,NTFS 实际上存储 UTF-16 数据,而在各种 Unix 平台上使用的大多数文件系统只是存储(几乎)任意字节序列,无论传递给 open()。使用这种文件系统的软件可以配置为存储 UTF-8 数据(或其他任何东西,您必须弄清楚您的系统是如何配置的)。还有一些奇怪的混合体,比如 HFS+ 上的 OS X,其原生 API 是基于字节的,但磁盘存储的是 UTF-16。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多