PHP-上传utf-8文件名

我是越南人,我想上传utf-8文件名,例如


Tên Tệp Tiếng Việt.JPG


这是我的代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>utf-8</title> 

</head> 


<body> 

<?php

    if(isset($_POST["submit"])) { 

       if($_FILES["upload"]["error"] > 0 ) echo "FILE ERROR!"; 

       else 

         { 

           $base_dir = "D:/"; 

           $fn = $_FILES["upload"]["name"]; 


           $fn2 = $base_dir.$fn;


           move_uploaded_file($_FILES["upload"]["tmp_name"],$fn2); 

         } 

     } 

?> 

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 

  <input type="file" name="upload" id="upload" /> 

  <input type="submit" name="submit" id="submit" value="Send" /> 

</form> 

</body> 

</html> 

但是当我上传时,我在计算机D:\上看到的文件如下


Tên Tệp Tiếng Việt.JPG


如何解决这个问题


RISEBY
浏览 297回答 3
3回答

撒科打诨

这meta无效:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />因为网络服务器已经发送了Content-Type标头,因此决定了编码方式。Web浏览器以相同的编码发送表单。meta当用户离线时,此功能很有用。因此,您必须Content-Type自己设置sned HTTP标头:<?php header("Content-Type: text/html; charset=utf-8"); ?>确保将其放在任何HTML,内容或任何发送的内容之前。另外,accept-charset标记form应可正常工作:&nbsp;<form accept-charset="utf-8">&nbsp;

慕姐4208626

到目前为止,我发现的唯一解决方案 ..(2014年):1)我没有以UTF-8字符串在FTP上存储文件。相反,我使用此功能来重命名上传的文件:<?php// use your custom function.. for example, utf8_encode$newname&nbsp; = utf8_encode($_FILES["uploadFile"]["name"]);move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $newname);?>&nbsp;2)现在您可以重命名(或其他)$newname;
打开App,查看更多内容
随时随地看视频慕课网APP