Почему функция chr дает неожиданный вывод? - PullRequest
1 голос
/ 18 марта 2011

В Perl print chr(0x263a); будет печататься идеальный смайлик - .

В PHP print chr(0x263a); выведет двоеточие :.

Кто-нибудь знает почему?

Ответы [ 2 ]

15 голосов
/ 18 марта 2011

Функция Perl chr возвращает символ, представленный этим числом, в ascii или unicode.

Возвращает символ, представленный этим НОМЕРОМ в наборе символов. Например, chr (65) - это «A» в ASCII или Unicode, а chr (0x263a) - смайлик в Unicode.

PHP-функция chr только для ascii.

Возвращает односимвольную строку, содержащую символ, указанный в ascii.

Причина, по которой PHP печатает двоеточие, заключается в том, что значение ascii находится в диапазоне от 0 до 255 ...

0x263a % 256 = 58

58 в ascii это двоеточие.

7 голосов
/ 18 марта 2011

Прочитайте страницу документации chr .chr работает только со значениями ASCII в php.

Посмотрите на эту страницу, там внизу есть помощники преобразования Unicode (например, посмотрите uchr).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...