Search code examples
phpcmdcommand-line-interfaceunicode-stringsquare-root

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


For a PHP (5.6) script that is run in the command line I am attempting to print the square root symbol but am failing to do so. Instead I get junk characters.

I have already read the many questions/answers on printing unicode characters from PHP CLI to the command line but none relate exactly to my example.

I am on Windows 10 using the standard command prompt (cmd.exe) which I am happy using.

I am using the Consolas font and have run chcp 65001 to set the prompt to utf-8. *Have also tried Lucida console*.

// Square root symbol

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

I have tried iconv(), json_decode(), mb_convert_encoding() and pack() all unsuccessfully.


Solution

  • solution


    <?php
        shell_exec('chcp 65001'); // set to utf-8
        $formatter = "\033[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");