[字号:  ]

怎么解决上传时中文文件名乱码问题

发布时间:2008-4-02 21:10   作者: sim86   信息来源: PHPChina 开源社区门户
UTF-8 上传文件后文件名变成乱码,请问怎么可以解决 move_uploaded_file( iconv("gb2312", "UTF-8", $file["tmp_name"]), $path);

最新回复

sim86 at 2008-4-02 21:27:29
没人知道?
lei0535 at 2008-4-02 21:45:18
你描述的不是太准确,你是说是存到数据库里的是乱码还是,放到服务器上的文件名成乱码了?
sim86 at 2008-4-02 21:57:23
放到服务器上的文件名成乱码了
zig at 2008-4-02 23:01:25
重新给文件名命名:md5(原文件名).随机数.原扩展名
sim86 at 2008-4-02 23:35:14
要是重命名我早搞定了。呵呵
zig at 2008-4-03 10:01:36
最好不要上传中文文件名的文件,尤其是在linux,apche下面
wzm112 at 2008-5-13 17:39:34
我们的目的是把utf-8编码格式的文件名转成gbk(中文)格式编码,上传后,保存显示的文件名称,才是我们想要的文件名称! 我们分析下sim86 兄弟的代码: move_uploaded_file( iconv("gb2312", "UTF-8", $file["tmp_name"]), $path); move_uploaded_file ( string filename, string destination ); filename //是上传到服务器上的临时文件名; destination //是我们上传到服务器上指定目录文件的路径; 在这里 sim86 兄弟 你将临时文件格式转变成 UTF-8 编码我们分析下: 如果你的php文件编码是UTF8那么这句更本没有作用,如果是gb2312 那么,肯定会发生找不到文件的错误! 因为你将临时文件名改变成utf8格式,在中文格式下文字应该就是乱码的文件路径,变成乱码的文件路径,move 过去一定找不到原文件! 所以其实我们所要状换格式的是,保存的地址: php utf-8编码: move_uploaded_file( $file["tmp_name"], iconv("UTF-8","gb2312", $path)); //你的系统默认GBK编码! php GB2312编码:move_uploaded_file( $file["tmp_name"], iconv("gb2312"," UTF-8",$path)); //你的系统默认UTF8 我们常用的是上面一种,我们的php文件是uft8编码,然后发现保存文件到我们中文windows操作系统中,文件变成乱码! 有事常联系:wzm112_k@126.com