这是从lumen框架里面找出来的
## Symfony\Component\Console\Helper\QuestionHelper
$ret = '';
$cp = setIOCodepage();
while (false !== ($char = fgetc($multiLineStreamReader))) {
if (\PHP_EOL === "{$ret}{$char}") {
break;
}
$ret .= $char;
}
resetIOCodepage($cp, $ret);
function setIOCodepage(): int
{
if (\function_exists('sapi_windows_cp_set')) {
$cp = sapi_windows_cp_get();
sapi_windows_cp_set(sapi_windows_cp_get('oem'));
return $cp;
}
return 0;
}
function resetIOCodepage(int $cp, $input)
{
if (0 !== $cp) {
sapi_windows_cp_set($cp);
if (false !== $input && '' !== $input) {
$input = sapi_windows_cp_conv(sapi_windows_cp_get('oem'), $cp, $input);
}
}
return $input;
}
$ret 用户得输入
$cp 操作系统 codepage
- 这段代码先置成了 OEM代码页
- 用户输入的字符串 的编码就成了OEM
- 然后恢复,并把输入转换成系统编码
参考资料:
- https://www.cnblogs.com/benbenalin/p/6911781.html