Php 在 linux 服务器上以错误的编码保存上传的文件

标签 php linux forms encoding upload

我有一个用于保存 tmp 文件的经典 php 脚本:

$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”。请帮我弄清楚如何处理编码。

谢谢

编辑:

让它与 iconv 一起工作功能。然而,由于一些奇怪的原因,它必须被编码成 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')

关于Php 在 linux 服务器上以错误的编码保存上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35333325/

相关文章:

php - 不要重写 css 或 js 或图像文件 htaccess

linux - 在变量中写入命令的 PID

javascript - ASP.NET MVC 2 从 JavaScript 发布 AJAX

php - Joomla getApplication 中的参数 'site' 是什么意思?

php - 无法在 php 中从 exec 或 shell_exec 执行 aws cli 命令

regex - 如何使用 bash(3.2.25) 的一个额外的二元运算符 :=~

jquery - 如何在表单中实现类似 Stack Overflow 的水印?

mysql - 是否有任何免费工具可以自动从现有的 html 表单创建数据库(首选 mysql)表?

php - 可以使用 Array_sum 或循环求和吗?

c++ - LINUX/C++ 从第二个文件中删除第一个文件中的字符串