printf () Расширенные символы Юникода?

$formatthis = 219;
$printthis = 98;
// %c - the argument is treated as an integer, and presented as the character with
that ASCII value.

$string = 'There are %c treated as integer %c';
echo printf($string, $formatthis, $printthis);

Я пытаюсь понять printf ().
Я не совсем понимаю параметры.

Я вижу, что первый параметр — это строка, к которой будет применено форматирование.

Вторая — первая переменная для форматирования, а третья — вторая переменная для форматирования.

Чего я не понимаю, так это как заставить печатать символы Юникода, которые являются особыми.
НАПРИМЕР. За пределами a-z, A-Z,! @ # $% ^&*(){}» ТАК ​​ДАЛЕЕ.

Кроме того, почему он помещается вместе с расположением последней цитаты в строке?

ВЫХОД:
Есть рассматривается как целое число 32

How could I encode this in to UTF-16 (Dec) // Snowman = 9,731 DEC UTF 16?

UTF-8 'LATIN CAPITAL LETTER A' (U+0041) = 41, but if I write in PHP 41 I will get ')' I googled     an ASCII table and it's showing that the number for A is 065...

ASCII is a subset of UTF-8, so if a document is ASCII then it is already UTF-8

If it's already in UTF-8, why are those two numbers different? Also the outputs different..

РЕДАКТИРОВАТЬ, хорошо, поэтому на графике, который я смотрю, очевидно, отображаются цифры в значении HEX, которые я не сразу заметил, 41 в HEX — это ASCII 065

0

Решение

%c в основном это функция int2bin, то есть она форматирует число в свое двоичное представление. Это идет до десятичного числа 255, которое будет выводиться как байт 0xFF,

Чтобы вывести, скажем, символ снеговика ☃, вам нужно вывести точные байты, необходимые для представления его в выбранной кодировке. Если вы выбрали UTF-8 для его кодирования, необходимые байты E2 98 83:

printf('%c%c%c', 226, 152, 131); // ☃
// or
printf('%c%c%c', 0xE2, 0x98, 0x83); // ☃

Проблема в вашем случае состоит в том, что 1) байты, которые вы выводите, ничего не значат в кодировке, в которой вы интерпретируете результат как (имеется в виду байт для 98 ничего не значит в UTF-8 на данный момент, поэтому вы видите » «) и 2) что вы echoв результате printf, который выводит 32 (printf возвращает количество байтов, которые он выводит).

2

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

Других решений пока нет …