2012-12-10 30 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); 
相關問題