fgets (STDIN) 无法获得终端输入的中文内容(包括标点符号)
我目前尝试着使用php做一个终端交互工具,但是使用fgets(STDIN)来获取终端输入内容时,输入的中文在终端只能打印出空字符串,请大家帮忙看看。(PHP7.2.11, windows10)
代码如下
namespace Client;
class Client
{
public function __construct()
{
$msg = $this->getMsg();
var_dump($msg);
}
public function getMsg(){
fwrite(STDOUT, "请输入消息:");
return fgets(STDIN);
}
}
new Client();
输出的效果如下:
E:\www\Client>php Client.php
请输入消息:你好;
string(5) "
"
同问题,老哥解决了没有?
我也是遇到了,windows10系统会出现这种情况,linux下 fgets(STDIN) 获取参数没问题,最后用的是 getopt() 函数解决这个问题。
我的方案是,判断系统,windows用 getopt,linux用 fgets(STDIN) ,给用户不同的终端示例,提示。
readline()可以获取到,但是readine 显示键盘入的字会变形,但是不影响获取