在 PHP 中,当我使用该ord
函数来捕获我的角色的 ASCII 代码时,我得到了这种行为:
ord("a") // return 97
chr(97) // return a
但是当我使用特殊字符时Œ
,返回不同:
ord("Œ") // return 197
chr(197) // return �
我所有的页面都是用 utf8 编码的。对于大多数特殊字符,此行为是相同的。
过去有人见过这个问题吗?我该如何解决?
ord()
并且chr()
都使用字符的 ASCII 值,这是一种单字节编码。Œ 不是 ASCII 中的有效字符。
可以通过指定字节偏移量来获取多字节字符的每个字节,如下:
$oethel = "Œ";
$firstByte = ord($oethel[0]); // 197
$secondByte = ord($oethel[1]); // 146
但是,反转该过程不起作用,因为分配给字符串字节偏移量会将该字符串转换为数组:
$newOethel = "";
$newOethel[0] = chr(197);
$newOethel[1] = chr(146);
echo $newOethel;
// Output is as follows:
// PHP Notice: Array to string conversion
// Array
带问号的黑色菱形是显示问题。
在https://stackoverflow.com/a/38363567/1766831查看黑色钻石的详细信息 。有两种情况;看看哪个适合。