PHP:chr函数问题与特殊字符

时间:2015-09-30 11:31:20

标签: php utf-8 chr

在PHP中,我有以下代码:

<?php
  echo "€<br>";
  echo ord("€") . "<br>";
  echo chr(128) . "<br>";

我得到以下输出:

€
128
�

为什么chr功能不能为我提供€符号?我怎么能得到€?我真的需要这个工作。提前谢谢。

1 个答案:

答案 0 :(得分:4)

chrord仅适用于单字节ASCII字符。更具体地说,ord只查看其参数的第一个字节。

欧元符号是UTF-8中的三字节字符:0xE2 0x82 0xAC,因此ord("€")(带有UTF-8符号)返回226(0xE2)

对于同样存在于ISO-8859-1(latin1)字符集中的字符,您可以使用utf8_encode()utf8_decode(),但不幸的是,那里没有包含€符号,所以{{ 1}}将返回“?”并且无法转换回来。

TL; DR:您不能将utf8_decode('€')ord与UTF-8等多字节编码一起使用