Как распечатать символ квадратного корня при запуске сценария PHP в командной строке Windows 10?

Для сценария PHP (5.6), который запускается в командной строке, я пытаюсь напечатать символ квадратного корня, но мне не удается это сделать. Вместо этого я получаю ненужные персонажи.

Я уже прочитал много вопросов / ответов о печати символов Unicode из PHP CLI в командную строку, но ни один из них не относится точно к моему примеру.

Я на 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() все безуспешно.

0

Решение

<?
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);

?>
1

Другие решения

решение


<?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");
0

По вопросам рекламы [email protected]