PHP UTF-8 для командной строки Windows

Все в вопросе: у меня есть PHP скрипт, который является файлом UTF-8. В этом script я хочу сделать это:

  <?
  echo "âêïû\n";
  ?>

Если я запустил его в приглашении Windows, я получаю следующее:

C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
âêïû
C:\php>

Мне не удалось найти правильную схему преобразования. Я тоже пробовал этот код:

$tab = mb_list_encodings();
foreach ($tab as $enc1) {
  foreach ($tab as $enc2) {
    $t=mb_convert_encoding("âêïû\n", $enc1, $enc2);
    if (strlen($t)<14) {
      echo $enc1." ".$enc2." = ".$t."\n";
    }
  }
}

И я не нашел правильного преобразования!

Любая помощь будет принята с благодарностью

Ответ 1

Ты поставил меня на правильный путь, но возникла проблема (я люблю Windows\o/):

C:\php>chcp 65001
Page de codes active : 65001
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php | more
Mémoire insuffisante.

Mémoire insuffisante = недостаточно памяти.

Если я попробую

C:\php>chcp 1252
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
C:\php>ééîîïïÂÂÂÂâûü

он работает. Только Бог знает почему. Но это работает. Спасибо, что поставили меня на правильный путь!

Кстати, PHP-код для правильной формы UTF8 для командной строки:

  echo mb_convert_encoding($utf8_string, "pass", "auto");

Ответ 2

Проблема в Windows cmd по умолчанию не поддерживает UTF8. Из этой ссылка, если вы следуете этим

  • Откройте окно командной строки
  • Измените свойства окна, чтобы использовать что-то помимо стандартного растрового шрифта. шрифт Lucida Console True Type выглядит хорошо.
  • Запустите "chcp 65001" из командной строки

Вы должны иметь возможность выводить utf8.