为什么chr函数会产生意外输出?

tet*_*ris 1 php perl

在Perl print chr(0x263a);中将打印出完美的笑脸 - ?.

在PHP print chr(0x263a);中将打印冒号:.

有谁知道为什么?

Jac*_*cob 15

Perl的chr函数在ascii或unicode中返回由该数字表示的字符.

返回字符集中该NUMBER表示的字符.例如,chr(65)是ASCII或Unicode中的"A",而chr(0x263a)是Unicode笑脸.

PHP的chr函数仅适用于ascii.

返回包含ascii指定的字符的单字符字符串.

PHP打印冒号的原因是因为ascii值在0到255之间...

0x263a % 256 = 58
Run Code Online (Sandbox Code Playgroud)

ascii中的58是冒号.


Mat*_*Mat 7

阅读chr文档页面.chr仅适用于ASCII值php.

向下看那个页面,那里有Unicode转换助手(查找uchr例子).