Может быть, fgets () не в том, что не так, но мне так кажется. Попробуйте эту минимальную тестовую настройку для размера:
test.bat (Unicode):
@echo off
php test.php
test.php (Unicode):
<?php
$input = fgets(STDIN);
file_put_contents('output.txt', $input);
Я запускаю test.bat, набираю "åäö", нажимаю Enter и затем открываю output.txt. Там не написано "аааа", а вместо этого "NULNULNUL".
Что не так? Я даже пытался добавить "chcp 65001" в test.bat (перед строкой php test.php). То же самое, если я сделаю это.