在PHP中,我有以下代码:
<?php
echo "€<br>";
echo ord("€") . "<br>";
echo chr(128) . "<br>";
我得到以下输出:
€
128
�
为什么chr功能不能为我提供€符号?我怎么能得到€?我真的需要这个工作。提前谢谢。
答案 0 :(得分:4)
chr
和ord
仅适用于单字节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等多字节编码一起使用