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.
<?
echo "\u{221a}";
echo json_decode('"\u221a"');
echo html_entity_decode('√', 0, 'UTF-8');
?>
Command line test session with "Consolas" font:
W:\php-7.1.2-Win32-VC14-x64>type test.php
<?
echo "\u{221a}";
echo json_decode('"\u221a"');
echo html_entity_decode('√', 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>
Edited to adapt to comments - Tested on PHP 5.6.30
<?
$entity = '√';
// 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 = "\033[0m%s\n"; // use white text
$sqrt = html_entity_decode('√');
$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");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.