用PHP上传文件,上的文件和html界面中文乱码问题分享

今天做了个php上传文件的例子,如下是成功后的代码:

';
  $files = $_FILES['userfile'];
  // echo $files['name'][0];
  for($i=0;$i';
  } else {
    $name = iconv("gb2312","UTF-8",$name);
    $alert .= $path.$name.'上传失败!' . getUploadErr($files['error'][$i]) . '
'; } } } ?> ajax

单文件上传

`

完成这个例子时,遇到了如下问题:
1.php文件中嵌入html标签时,html内的文字会出现乱码
解决方案:出现这个原因是php代码和html代码,没有统一文字编码在php头部放入

header("content-type:text/html;charset=utf-8");

然后在html中放入

  

就可以解决这个问题

2.使用move_uploaded_file()函数上传到upload/目录中的文件,若文件名含有中文,则upload/下的文件名会乱码
解决方案:在move_uploaded_file()之前,先要把文件名的UTF-8编码方式转换成gb2312编码方式,我们电脑的文件使用的是gb2312格式,在move_uploaded_file()前加入这么一句:

 $name = iconv("UTF-8","gb2312",$files['name'][$i]);

再使用move_uploaded_file()上传,上传到计算机目录下的文件名就能正常显示中文了,但是这里要注意一个问题,如果这时候你想在网页上显示上传成功的提示信息(包含文件名),那么就需要你把$name再重新转换回
UTF-8编码格式 $name = iconv("gb2312","UTF-8",$name);

你可能感兴趣的:(用PHP上传文件,上的文件和html界面中文乱码问题分享)