php 解决上传中文文件名时出现乱码的问题

有时候上传文件是中文的文件名会出现乱码,

可以在移动文件时使用icov('utf-8','gb2312',filename)转换

代码:

<?php
//header('Content-type: text/html;charset=utf-8');
if (!empty($_FILES)) {
    $fileInfo = $_FILES['myUpload'];
    //echo '<pre>';
    //print_r($fileInfo);
    //echo '</pre>';
    $fileName = $fileInfo['name'];
    $fileType = $fileInfo['type'];
    $fileTmpName = $fileInfo['tmp_name'];
    $fileError = $fileInfo['error'];
    $fileSize = $fileInfo['size'];

//    echo '文件名称:' . $fileName . '<br />文件类型:' . $fileType . '<br />文件临时目录' . $fileTmpName . '<br />文件错误:' . $fileError . '<br />文件大小: ' . $fileSize.'bytes';
    if ($fileError == UPLOAD_ERR_OK) {
        if (move_uploaded_file($fileTmpName,iconv('utf-8','gb2312','./uploads/'.$fileName))) {
//            echo __FILE__;
            $fileDir = dirname(__FILE__);
//            echo $fileDir;
//            var_dump($fileDir);
//            $openFile = $fileDir.'/uploads/'.$fileName;
//            while (file_exists($fileName)) {
            echo '文件存在';
//            $fileName = iconv('gbk','utf-8',$fileName);
//            var_dump($temp);
//            }
            echo "<img src=\".\\uploads\\" . $fileName . "\" alt=\"$fileName\" />";
            echo '上传成功';
        } else {
            echo '上传失败';
        }
    } else {
        switch ($fileError) {
            case 1:
                echo '上传的文件超过php.ini中的upload.max.filesize的限制';
                break;
            case 2:
                echo '文件超过表单的MAX_FILE_SIZE的限制';
                break;
            case 3:
                echo '部分表单被上传';
                break;
            case 4:
                echo '未发现上传文件';
                break;
            case 6:
                echo '未发现临时文件';
                break;
            case 7:
                echo '文件写入失败';
                break;
            case 8:
                echo 'php文件上传拓展没有打开';
                break;
            default:
                echo '未知错误,请联系管理员,happy@13.com';
                break;
        }

    }
} else {
    echo '未知错误';
}