在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符号)返回226 (0xE2)
对于ISO-8859-1 (latin1)字符集中也存在的字符,您可以使用utf8_encode()
和utf8_decode()
,但不幸的是,那里不包含€符号,因此utf8_decode('€')
将返回"?"并且不能转换回来。
TL;DR: ord
和chr
不能用于像UTF-8这样的多字节编码