为了账号安全,请及时绑定邮箱和手机立即绑定

PHP-上传utf-8文件名

PHP-上传utf-8文件名

PHP
RISEBY 2019-12-04 10:06:49
我是越南人,我想上传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如何解决这个问题
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

这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应可正常工作:


 <form accept-charset="utf-8"> 


查看完整回答
反对 回复 2019-12-04
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

到目前为止,我发现的唯一解决方案 ..(2014年):


1)我没有以UTF-8字符串在FTP上存储文件。相反,我使用此功能来重命名上传的文件:


<?php

// use your custom function.. for example, utf8_encode

$newname  = utf8_encode($_FILES["uploadFile"]["name"]);

move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $newname);

?> 

2)现在您可以重命名(或其他)$newname;


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 296 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信