2011-02-15 71 views
6

我正在使用php ZipArchive類來生成zip存檔。我使用addFile方法的第二個參數來設置檔案中文件的名稱(因爲磁盤上的實際文件具有不同的名稱)。某些名稱必須包含法語口音(如é)。當我下載存檔時,重音未正確顯示在文件名中。我應該使用什麼編碼作爲文件名? (應用程序使用UTF-8)ZipArchive使用什麼編碼在創建的存檔中存儲文件名?

+0

郵編是一個很老的格式,並早於Unicode的。較早的2007年版本的格式很可能只是使用標準的擴展ascii。 '07之後,新規範允許使用UTF-8。檢查您生成的文件版本。 – 2011-02-15 16:20:54

回答

2

Zip文件沒有指定的編碼;歸檔工具必須猜測(或假定)使用的編碼。先嚐試CP1252,然後從那裏開始。

+1

不起作用。我已經嘗試過ISO-8859-1,CP1252和CP850沒有成功 – matei 2011-02-15 15:27:06

+0

文件名的字節順序是什麼樣的,它應該是什麼文本? – 2011-02-15 15:31:20

4

使用DOS編碼。我的文件名具有西里爾文字符,所以我將文件名從cp1251(Windows)編碼爲cp866(DOS),並將文件名傳遞給$zip->addFile()

9

這是php錯誤#53948,見official bug report

建議的解決方法(爲我工作):

$zip->addFile($file, iconv("UTF-8", "CP852", $local_name)); 
相關問題