What encoding does ZipArchive use to store file names inside the created archive?

孤街醉人 提交于 2019-12-12 10:48:08

问题


I'm using the php ZipArchive class in order to generate a zip archive. I use the second parameter of the addFile method in order to set the name of the file in the archive (since the real file on disk has a different name). Some of the names must contain french accents (such as é). When I download the archive, the accents aren't correctly displayed in the file name. What encoding should I use for the file names ? (the application uses UTF-8)


回答1:


It is php bug #53948, see official bug report.

Suggested workaround (worked for me):

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



回答2:


Use DOS encoding. My file names has cyrillic characters, so I'm encoding the file names from cp1251 (Windows) to cp866 (DOS), upon passing the filename to $zip->addFile().




回答3:


Zip files don't have a specified encoding; the archive tool must guess (or assume) the encoding used. Try CP1252 first, then go from there.



来源:https://stackoverflow.com/questions/5005221/what-encoding-does-ziparchive-use-to-store-file-names-inside-the-created-archive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!