2013-03-29 90 views
1

在PHP中,我希望將文件輸出到目錄,但文件名包含希臘字符,因此輸出會出現亂碼。如何在php中保存文件,在希臘文中輸出文件名

$imagename = $ti[$img_index].'.jpg'; 
$filepathname = $dirpath ."/".$imagename; 
$savefile = fopen($filepathname, 'w'); 

我試着做以下,但沒有成功:

$filepathname = mb_convert_encoding($filepathname, 'utf8', 'iso-8859-1');

回答

0

您需要的文件名TRANSLIT到ASCII字符集或一些不同的OS

<?php 
$imagename = $ti[$img_index].'.jpg'; 
$imagename = @iconv("utf-8","ascii//TRANSLIT//IGNORE",$imagename); 
$filepathname = $dirpath ."/".$imagename; 
$savefile = fopen($filepathname, 'w'); 
?> 
+0

一個缺點這種方法是,你可能會失去顯著或所有的字符,如果PHP找不到合適的翻譯。 – Halcyon

0

supperted您不應該依賴文件名中的特殊字符。你應該改變你的應用程序邏輯(隨機或基於其他數據構建圖像名稱,將字符轉換爲ascii - 例如西里爾文對每個chacater od字符對都有相應的ASCII字符,可能這種情況在希臘語中是相似的)。我在URL中看不到任何特殊字符的利潤。

記住圖像應該被URL引用,所以這需要額外的工作與urlencoding。

想想任何遷移(服務器,操作系統,配置等)可能出現的問題。

0

操作系統與非ASCII字符的問題,編碼沒有關係。

您可以將文件名編碼爲僅包含安全範圍內的字符。我使用的編碼方案是Quoted-printable。它可以支持任何編碼的字符(即使是UTF-16和UTF-32),因爲它是二進制編碼。

如果您提供文件下載,您將不得不撤消編碼當然。

相關問題