>我有一个经典的 php 脚本来保存 tmp 文件:
$uploads_dir = "scans";
var_dump( $_FILES );
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
rename($tmp_name, urldecode("/var/www/html/$uploads_dir/$name") );
}
}
echo urldecode("/var/www/html/$uploads_dir/$name");
但是,文件"фавикон.png"被保存为"С"авиРуРѕРЅ.png"。请帮助我如何处理编码。
谢谢
编辑:
让它与图标函数一起工作。但是,由于某种奇怪的原因,它必须编码为Windows格式。
生成的代码:
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
$name =iconv('UTF-8','windows-1251', $name);
copy($tmp_name, "/var/www/html/$uploads_dir/$name");
}
您可能需要
以下setlocale(LC_ALL, 'ru_RU.utf8')
尝试将这一行放在脚本的顶部:
header('Content-Type: text/html; charset=utf-8');
你有没有尝试使用utf8_decode:
utf8_decode($name);
我建议您更改文件名,这样做有很好的理由。查看此帖子以获取更多详细信息: https://stackoverflow.com/a/17866898/1016425