sharehua
(8080268)
1
存储代码:
$file->saveAs($file->getName()); (在action中的)
读取代码:while($file = dir($startDir)->read()) { (在action中的)
读取和存储的时候,在php显示文件名都是正常的。
Quote
2269沃尔1897_03b1632244.jpg
但在windows文件系统中,看到的是
Quote
2269娌冨皵1897_03b1632244.jpg
有时候会存储正常,这个时候是在这种情况下:
我改为这段代码来存储,
$file->saveAs(iconv("UTF-8","gb2312",$file->getName()));
存储的文件名更奇怪了,是方块,而且read,显示不出来。我就把代码再改回来,这时候存储就正常了。然后我把view页面刷新,再上传,文件系统中又显示奇怪的中文名了。
qiang
(Qiang Xue)
2
这和你操作系统的缺省编码有关。通常类似的问题我建议不要直接用上传的文件名保存文件,而是把文件名存在数据库里。
sharehua
(8080268)
3
我这是文件管理器 ,没有用到数据库,这样的情况如何处理?
qiang
(Qiang Xue)
4
那么你用iconv应该是可以的。确认一下目标编码是否和操作系统一致。也确认一下源编码是否utf8。我也没有更好的建议了。
sharehua
(8080268)
5
iconv更不可取,是普通的post方式上传,没有用ajax。看来中文比较头大。