В PHP у меня есть следующий код:
<?php
echo "€<br>";
echo ord("€") . "<br>";
echo chr(128) . "<br>";
И я получаю следующий вывод:
€
128
�
Почему функция chr не может дать мне знак €? Как я могу получить €? Мне действительно нужно это, чтобы работать. Заранее спасибо.
chr
а также ord
работать только с однобайтовыми символами ASCII. Более конкретно ord
только смотрит на первый байт своего параметра.
Знак евро является трехбайтовым символом в UTF-8: 0xE2 0x82 0xAC
, так ord("€")
(с символом UTF-8) возвращает 226 (0xE2)
Для символов, которые также присутствуют в наборе символов ISO-8859-1 (latin1), вы можете использовать utf8_encode()
а также utf8_decode()
но, к сожалению, там нет знака €, поэтому utf8_decode('€')
вернусь «?» и не может быть преобразован обратно.
TL; DR: Вы не можете использовать ord
а также chr
с многобайтовой кодировкой типа UTF-8
Других решений пока нет …