PHP:特殊字符的 chr 功能问题

PHP: chr Function Issue with Special characters

在PHP中我有以下代码:

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

我得到以下输出:

€
128
�

为什么 chr 函数不能为我提供 € 符号?我怎样才能得到欧元?我真的需要这个才能工作。提前致谢。

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

欧元符号是 UTF-8 中的三字节字符:0xE2 0x82 0xAC,因此 ord("€")(使用 UTF-8 符号)returns 226 (0xE2)

对于 ISO-8859-1 (latin1) 字符集中也存在的字符,您可以使用 utf8_encode()utf8_decode(),但不幸的是那里不包含 € 符号,所以utf8_decode('€') 会 return “?”并且无法转换回来。

TL;DR: 您不能将 ordchr 与多字节编码一起使用,例如 UTF-8