作者tper8042 (tper8042)
看板PHP
标题[请益] 关於解压缩後档名的乱码问题
时间Fri Jan 18 21:21:10 2013
请教各位先进
小弟最近写了一支让使用者上传档案的程式(若为zip档则自动解压缩)
(解压缩的路径跟上传非.zip档案的目录皆为./upload/)
假设目录结构如下 |- list.php
|- do-upload.php
|- upload/
可是windows压缩的档名编码都是big5,
导致在档案清单(list.php)中,没办法同时显示utf-8跟big-5编码的档案名称
目前想了一些办法,不过好像都不可行
1. 上传非.zip档时将档名转成big5->
目前已经有很多已存的utf-8档案,且日後output时都要iconv
2. 上传zip档时将档名转成utf-8-> 无法得知使用者是不是在windows下压缩的档案
3. 输出时转换-> 小弟不知道有没有办法判断哪个档名是哪个编码的办法...orz
请问有没有人能提供比较一般化或一劳永逸的做法呢?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.215.86
1F:→ tyf99:为什麽要转成big5却不转成utf-8? 01/18 22:35
2F:→ tyf99:windows只有UI是big5,ntfs使用的编码仍是unicode 01/18 22:36
3F:→ tyf99:找一下解zip的开源软体,应该有支援多语系档名的解压 01/18 22:38
原因有几点:
1. php的ZipArchive class跟pclzip似乎都没办法在extract的同时转成utf-8
2. 无法判断使用者上传的压缩档是不是windows压出来的
p.s 我是要在server端解压缩
※ 编辑: tper8042 来自: 114.33.215.86 (01/18 23:13)
4F:→ tper8042:解决了 一笔一笔mb_detect_encoding然後iconv->extract 01/19 01:27