PHP、UTF-8、IIS和文件上载

PHP、UTF-8、IIS和文件上载,php,iis,file-upload,utf-8,Php,Iis,File Upload,Utf 8,我将PHP5.3与MSSQL Server 2005和MS的MSSQL Server(PDO)驱动程序一起使用 我最近对新版本的驱动程序和它用来从数据库传递数据的字符集有点纠结。所以我决定将我的整个应用程序配置为UTF-8,以避免将来出现此类问题 因此,我将数据库更改为使用unicode数据类型,配置HTML头并设置Eclipse以UTF-8格式保存代码文件。我还将correspondig accept字符集标记添加到所有HTML表单中。到现在为止,一直都还不错。一切正常,但现在我遇到了一个新问

我将PHP5.3与MSSQL Server 2005和MS的MSSQL Server(PDO)驱动程序一起使用

我最近对新版本的驱动程序和它用来从数据库传递数据的字符集有点纠结。所以我决定将我的整个应用程序配置为UTF-8,以避免将来出现此类问题

因此,我将数据库更改为使用unicode数据类型,配置HTML头并设置Eclipse以UTF-8格式保存代码文件。我还将correspondig accept字符集标记添加到所有HTML表单中。到现在为止,一直都还不错。一切正常,但现在我遇到了一个新问题

我编写了一个简单的脚本,可以使用HTML表单上传文件,并将它们保存在我的Web服务器(WindowsServer2003和IIS6)上。在我切换到UTF之前,它一直工作得很好。当我上传文件名中带有特殊字符的文件时,这些字符没有正确保存。上传名为“ÄÖ220;.txt”的文件最终会在我的Web服务器上得到名为“ÃÖÜ.txt”的文件。这可能是一种痛苦,因为所有这些文件的进一步处理都依赖于不再正确的超链接

我尝试了以下几种可能的解决方案:

$isMoved = move_uploaded_file($_FILES['uploadedFile']['tmp_name'],"myFolder". utf8_encode($_FILES['uploadedFile']['name']));
但我总是以她在服务器的文件系统上有一个正确的文件名或另一个文件名结束

有人有主意吗D

提前谢谢
丹尼尔

如果我没有完全错的话,文件名是用UTF-8编码的。只需使用mb_convert_encoding()对其进行解码即可:


BurninLeo

如果我没有完全错的话,文件名是用UTF-8编码的。只需使用mb_convert_encoding()对其进行解码即可:


BurninLeo

在Windows Server 2012上使用PHP5.6和IIS8,我终于成功地通过使用

$filename = mb_convert_encoding(basename($_FILES['file']['name']),'ISO-8859-1', 'UTF-8');
在我的上传脚本和

$filename = utf8_encode(basename($file));
在我的显示和下载脚本中


当要删除这样一个上传的文件时,传递给unlink的文件名可能必须使用mb_convert_编码再次转换为ISO-8859-1。

在Windows Server 2012上使用PHP5.6和IIS8,我最终通过使用

$filename = mb_convert_encoding(basename($_FILES['file']['name']),'ISO-8859-1', 'UTF-8');
在我的上传脚本和

$filename = utf8_encode(basename($file));
在我的显示和下载脚本中


当要删除这样一个上传的文件时,传递给unlink的文件名可能必须使用mb_convert_编码再次转换为ISO-8859-1。

您是否已经将HTML和PHP文件的字符集更改为UTF-8?您如何查看文件系统上的文件?它们是UTF-8吗?您是否已经将HTML和PHP文件的字符集更改为UTF-8?您如何查看文件系统中的文件?它们是UTF-8吗?