上传具有西里尔文名称的文件时出现奇怪的符号

时间:2016-03-01 22:16:13

标签: php laravel encoding dropzone.js cyrillic

我正在使用Laravel和Dropzone.js。一切都很好,直到我上传带有西里尔文名称的文件。目录中的文件名称如下所示 - Приети РїРѕ специалности_окончателно-РЅРѕРІ_0这就是我猜的编码。在php.ini我设置default_charset="UTF-8" internal_encoding = UTF-8 input_encoding = UTF-8但问题仍然没有解决。它可能是什么?

2 个答案:

答案 0 :(得分:0)

看起来你需要http://php.net/manual/en/book.iconv.php 如果你有,你可以尝试:

$fileName = iconv("cp1251", "utf-8", $_FILES["upload"]["name"]);
// or
//  $fileName = iconv("ISO-8859-1", "utf-8", $_FILES["upload"]["name"]);


$baseDir = '/some/dir/';

move_uploaded_file(
    $_FILES["upload"]["tmp_name"],
    $baseDir.$fileName
);

答案 1 :(得分:0)

我可以确认以下内容正在工作:

header(“ Content-Type:text / html; charset = utf-8”);

if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    echo 'Error';
}
else {
    $baseDir = 'uploads/';
    $fn = iconv("utf-8", "cp1251", $_FILES["file"]["name"]);
    move_uploaded_file($_FILES['file']['tmp_name'], $baseDir.$fn);
    echo 'Success';
}