我是越南人,我想上传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">
慕姐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;
- 3 回答
- 0 关注
- 308 浏览
添加回答
举报
0/150
提交
取消