◆ コマンドプロンプトは Shift_JIS
◆ chcp 65001 したあとは日本語入力できない
◆ msys は UTF-8
◆ 両方の環境で使う標準入力受け取るプログラムは大変そう

これの続きです

気になったので入力も試してみました

まず確認用の PHP コードを用意します
とりあえず入力をのそのまま表示します
<?php

$stdin = fgets(STDIN);

var_dump($stdin);


[コマンドプロンプト]
C:\Users\user\Desktop>chcp
現在のコード ページ: 932

C:\Users\user\Desktop>php stdin.php
ファイル
C:\Users\user\Desktop\stdin.php:5:
string(8) "ファイル"


次は UTF-8 にします

[コマンドプロンプト]
C:\Users\user\Desktop>chcp
Active code page: 65001

C:\Users\user\Desktop>php stdin.php
ファイル
C:\Users\user\Desktop\stdin.php:5:
string(0) ""

何も表示されません
それ以前に通常のキーボードから日本語が入力できなくなっていて コピペで入力しました

コマンドプロンプトでは UTF-8 の入力を扱えないみたい
そのまま Shift_JIS で PHP に渡してくれてもいいのですけどね



次はバイナリで表示させてみます
<?php

$stdin = trim(fgets(STDIN));

var_dump(bin2hex($stdin));

[コマンドプロンプト]
C:\Users\user\Desktop>chcp
現在のコード ページ: 932

C:\Users\user\Desktop>php byte.php

C:\Users\user\Desktop\byte.php:5:
string(4) "82a0"

入力はやっぱり Shift_JIS です


[msys]
$ /c/programs/php-7.0.2-Win32-VC14-x64/php byte.php

C:\Users\user\Desktop\byte.php:5:
string(6) "e38182"

msys は UTF-8 です


やっぱりですが 入力のエンコーディングが違っています
コマンドプロンプト用に作ったプログラムを msys で起動して入力すると Shift_JIS を期待してるのに UTF-8 で入力されるのでちゃんと動かなそうです