有需要将文件夹和文件压缩成zip,网上找了zip.h unzip.h 资源。
"zip.h" 和 "unzip.h"以及实现 http://www.codeproject.com/KB/files/zip_utils.aspx 下载
结果在解压缩项目文件时,项目中文文件名出现乱码,在网上没有找到解决方案。经过查看源代码,这一般是Unicode项目下才会出现的问题。
解决方案如下:
zip.cpp和unzip.cpp下的字符转换如下:
zip.cpp
WideCharToMultiByte(CP_UTF8,0,dstzn,-1,zfi.iname,MAX_PATH,0,0);
unzip.cpp
WideCharToMultiByte(CP_UTF8,0,tname,-1,name,MAX_PATH,0,0);
这是UTF-8与Unicode之间的转换。
将上述WideCharToMultiByte调用函数的第一个参数改成CP_ACP即可正确解压缩文件夹。