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