/ iconv

PHP下PclZip中文乱码问题解决方案

吐槽下先,搜索引擎上居然搜不到大陆网站关于PclZip中文乱码的资料,此解决方案的灵感来源于台湾的某个被墙网站,CNM FBX!

问题出在文件名编码上(废话)

在Windows下zip文件内的文件名编码是GB2312,而我写的PHP文件编码是UTF8。

所以只要把文件名从UTF8转到GB2312就行了。

代码在PclZip.lib.php的2779行(函数privAddFile内),将

$p_header['stored_filename'] = $p_filedescr['stored_filename'];

改为

$p_header['stored_filename'] = mb_convert_encoding( $p_filedescr['stored_filename'],'GB2312','UTF-8');

台湾的那个解决方案用的是iconv转编码,但是我发现转的不完全正确,所以改用mb_convert_encoding来转,经测试可以使用。

PHP下PclZip中文乱码问题解决方案
Share this