通过IIS上传时,utf-8文件名被破坏

时间:2014-10-25 08:49:09

标签: file-upload utf-8 character-encoding iis-7.5 windows-server-2008

当我在Windows Server上通过IIS上传带有UFT-8文件名的文件时,文件名将被破坏。 (它们被更改为好像它们以ASCII编码,因此它们不再可访问)。我想知道是否有任何解决这个问题的方法。我还要提一下,我的Windows Server没有UTF-8文件名的任何问题,我可以通过RDP或FTP创建它们。只有通过IIS上载时才会出现此问题。

  

配置:
  操作系统:Windows Server 2008 SP1
  Web服务器:IIS 7.5
  通过fastcgi执行的PHP脚本上传

1 个答案:

答案 0 :(得分:1)

我认为,问题在于IIS。 IIS将所有请求数据转换为ascii,然后再将它们发送到PHP进程。由于这种转换,utf-8编码请求的所有特殊字符都将被销毁。

IIS支持更改此过程: https://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/configuring-the-fastcgi-extension-for-iis-60#utf8servervars

除此之外,PHP在Windows上的文件名中处理utf-8也存在问题。这个Bug已经用PHP 7.1修复: https://bugs.php.net/bug.php?id=33350

我通过更改IIS中的设置并升级到PHP 7.1来解决问题。