PHP:特殊字符的 chr 功能问题
PHP: chr Function Issue with Special characters
在PHP中我有以下代码:
<?php
echo "€<br>";
echo ord("€") . "<br>";
echo chr(128) . "<br>";
我得到以下输出:
€
128
�
为什么 chr 函数不能为我提供 € 符号?我怎样才能得到欧元?我真的需要这个才能工作。提前致谢。
chr
和 ord
仅适用于单字节 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: 您不能将 ord
和 chr
与多字节编码一起使用,例如 UTF-8
在PHP中我有以下代码:
<?php
echo "€<br>";
echo ord("€") . "<br>";
echo chr(128) . "<br>";
我得到以下输出:
€
128
�
为什么 chr 函数不能为我提供 € 符号?我怎样才能得到欧元?我真的需要这个才能工作。提前致谢。
chr
和 ord
仅适用于单字节 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: 您不能将 ord
和 chr
与多字节编码一起使用,例如 UTF-8