6

在 PHP 中,我有以下代码:

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

我得到以下输出:

€
128
�

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

4

1 回答 1

5

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

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

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

TL;DR:您不能使用ordandchr像 UTF-8 这样的多字节编码

于 2015-09-30T11:58:05.743 回答