2012-12-10 94 views
0

我们有一台CentOS 6机器,它具有一个Apache网络服务器,可以接受来自丰富Javascript客户端的文件上传。这些文件保存在php的move_uploaded_file在CentOS机器上用元音变音器保存文件

客户端和服务器(php)文件全都编码在iso-8859-1中,并且也在服务器上编码数据库。另外,html输出将iso-8859-1声明为字符集。

目前文件上传工作正常,除了带有元音变音(或其他未知的特殊字符)的文件导致错误。例如,文件1.Nachtrag Gemeinde Höchst.pdf获取应用程序正确的呼应,也是其产生下载该文件的链接是否具有正确的(URL-)编码:

http://ourdomain/saba/data/dok/00000092/1.Nachtrag%20Gemeinde%20H%C3%B6chst.pdf 

但这点击链接时,404错误出现。在shell中查找文件时,它会显示为1.Nachtrag Gemeinde H?chst.pdf,这表明某种错误的编码,尽管它可能只是因为shell具有utf-8编码。

我们忘了什么?

+3

我想你回答了你自己的问题。 'iconv'改为UTF-8,或者规范化为ASCII。 – Amadan

回答

0

由于@Amadan已经正确地指出,所需要的文件名被保存之前转换为UTF-8,即:

$filename = iconv('ISO-8859-1', 'UTF-8', $filename); 
$is_successful = @move_uploaded_file($tmp_filename, $ordnername . DIRECTORY_SEPARATOR . $filename); 
相关问题