ZipArchive使用什么编码在创建的存档中存储文件名?

时间:2011-02-15 14:58:58

标签: php encoding ziparchive

我正在使用php ZipArchive类来生成zip存档。我使用addFile方法的第二个参数来设置存档中文件的名称(因为磁盘上的真实文件具有不同的名称)。某些名称必须包含法语口音(例如é)。下载存档时,重音符未正确显示在文件名中。我应该使用什么编码的文件名? (该应用程序使用UTF-8)

4 个答案:

答案 0 :(得分:9)

这是php bug#53948,见official bug report

建议的解决方法(适用于我):

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

答案 1 :(得分:4)

使用DOS编码。我的文件名有西里尔字符,因此我将文件名从cp1251(Windows)编码为cp866(DOS),并将文件名传递给$zip->addFile()

答案 2 :(得分:2)

Zip文件没有指定的编码;归档工具必须猜测(或假设)使用的编码。首先尝试使用CP1252,然后再从那里开始。

答案 3 :(得分:0)

取决于Windows系统,例如法语,Windows的内部zip使用IBM850作为编码。