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.