Ошибка в виде вопросов

Хочу переименовать файл через метод rename(), но выдает максимально непонятную ошибку в виде знаков вопроса. Может у кого была такая проблема?

Сам код:

foreach($files as $file) {
    if ($file == "." or $file == "..") continue;
    $f = stat($dir.$file);
    if ($f['size'] > 20480 or is_numeric(basename($file)[0])) {
      unlink($dir.$file);
      continue;
    }
    else {
      $name = basename($file);
      $newName = "+".$name;
      rename($name, $newName);
    }

screen


Ответы (1 шт):

Автор решения: Егор Банин

Вопросики вместо букв появляются, когда браузер выводит текст в utf8 кодировке, но спотыкается о непонятные последовательности бит. Непонятны они браузеру потому, что они в другой кодировке (в вашем случае скорее всего win1251). При этом английские буквы универсально кодируются в любой кодировке, а вот, например, символы кириллицы кодируются по-разному. Поэтому английские слова в варнинге не исказились, а русские выглядят как набор вопросов.

Сообщение об ошибке вероятно зависит от операционной системы и ваш виндоуз пытается говорить с вами по-русски. Чтобы понять его, надо смотреть на это сообщение в win1251.

Впрочем, проблему видно и без чтения варнинга. Обратите внимание, что для других функций (stat и unlink) вы указываете директорию, а для rename не указываете. Как rename поймёт в какой директории вы хотите переименовать файл?

→ Ссылка