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

时间:2011-03-18 11:47:12

标签: php perl

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

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

有谁知道为什么?

2 个答案:

答案 0 :(得分:15)

Perl's chr function以ascii或unicode的形式返回该数字所代表的字符。

  

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

PHP's chr function仅适用于ascii。

  

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

PHP打印冒号的原因是因为ascii值介于0和255之间......

0x263a % 256 = 58
ascii中的58是冒号。

答案 1 :(得分:7)

阅读chr文档页面。 chr仅适用于php中的ASCII值。

向下看那个页面,那里有Unicode转换帮助器(例如,查找uchr)。