Я запускаю свой PHP CLI-скрипт с помощью start.bat, содержащего это:
@echo off
chcp 65001 > NUL
php engine.php
Часть "chcp 65001" специально предназначена для того, чтобы использовать Unicode (но это не так).
engine.php содержит:
<?php
$input = fgets(STDIN);
var_dump($input);
Когда я запускаю start.bat, он открывает консоль с запущенным engine.php:
åäölöäå
string(9) " l
"
Press any key to continue . . .
Как видите, он удаляется. прочь все символы, кроме «л». Это означает, что мои сценарии, которые полагаются на то, что я вставляю текст в качестве прерывания ввода, полностью калечат мой рабочий процесс. Мне нужно иметь возможность вставить любую строку, которую я скопировал в мой сценарий, и она прекрасно сохранилась.
Почему это происходит? Что мы можем сделать, чтобы обойти это?
Пожалуйста, не говорите мне использовать PowerShell. Это чертовски испорченный беспорядок, и он, кажется, ведет себя так же, даже когда я заставляю его работать (я никогда не хочу иметь дело с этим снова). Кроме того, у меня еще нет Windows Terminal, поэтому я застрял на классической консоли еще как минимум на несколько лет.