Почему консоль Windows молча удаляет любые символы, не входящие в ASCII? И как мне это исправить / обойти? - PullRequest
0 голосов
/ 10 ноября 2019

Я запускаю свой 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, поэтому я застрял на классической консоли еще как минимум на несколько лет.

...