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

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

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

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

C:php>php -c C:WINDOWSphp.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";
    }
  }
}

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

любая помощь была бы очень признательна

3 ответов


проблема в том, что строка Windows cmd по умолчанию не поддерживает UTF8. От этого ссылке, Если вы будете следовать этим

  1. откройте окно командной строки
  2. изменить свойства окна, чтобы использовать что-то кроме шрифт по умолчанию. кажется, что шрифт True Type консоли Lucida работает хорошо.
  3. запустите "chcp 65001" из командной строки

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


вы поставили меня на правильный путь, но была проблема kinddof (я люблю 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");

похоже, кодировка по умолчанию кодовая страница 437.