在 Windows 10 命令提示符中 运行 a PHP 脚本时如何打印出平方根符号?

How to print out the square root symbol when running a PHP script in a Windows 10 command prompt?

对于在命令行中为 运行 的 PHP (5.6) 脚本,我试图打印平方根符号,但没有成功。相反,我得到了垃圾字符。

我已经阅读了许多 questions/answers 关于从 PHP CLI 打印 unicode 字符到命令行的文章,但 none 与我的示例完全相关。

我在 Windows 10 使用我很高兴使用的标准命令提示符 (cmd.exe)。

我使用的是 Consolas 字体,并且 运行 chcp 65001 将提示设置为 utf-8。 *也尝试过 Lucida 控制台*。

// Square root symbol

echo "\u221A";
echo "\xe2\x88\x9a";
echo '√';

我试过 iconv()json_decode()mb_convert_encoding()pack() 都失败了。

<?
    echo "\u{221a}";
    echo json_decode('"\u221a"');
    echo html_entity_decode('&#x221a;', 0, 'UTF-8');
?>

使用 "Consolas" 字体的命令行测试会话:

W:\php-7.1.2-Win32-VC14-x64>type test.php
<?
    echo "\u{221a}";
    echo json_decode('"\u221a"');
    echo html_entity_decode('&#x221a;', 0, 'UTF-8');
?>
W:\php-7.1.2-Win32-VC14-x64>chcp
Página de códigos activa: 850

W:\php-7.1.2-Win32-VC14-x64>php test.php
√√√
W:\php-7.1.2-Win32-VC14-x64>chcp 65001
Página de códigos activa: 65001

W:\php-7.1.2-Win32-VC14-x64>php test.php
√√√
W:\php-7.1.2-Win32-VC14-x64>

已编辑 以适应评论 - 在 PHP 5.6.30

上测试
<?
    $entity = '&radic;';

    // select the one you like the best
    $squareRoot = '√';
    $squareRoot = html_entity_decode($entity);
    $squareRoot = mb_convert_encoding($entity, 'UTF-8', 'HTML-ENTITIES');

    printf('test: %s', $squareRoot);

?>


<?php
    shell_exec('chcp 65001'); // set to utf-8
    $formatter = "3[0m%s\n"; // use white text
    $sqrt      = html_entity_decode('&radic;');
    $output    = sprintf($formatter, $sqrt);
    $output   .= sprintf($formatter, $sqrt);
    // Padding required on the last line to prevent miscellaneous chars printing to the console
    // (Double the total number of lines (3))
    $output   .= sprintf($formatter, $sqrt . str_repeat(' ', 3*2));
    echo rtrim($output, "\n");