3

在 PHP 中,当我使用该ord函数来捕获我的角色的 ASCII 代码时,我得到了这种行为:

ord("a") // return 97
chr(97) // return a

但是当我使用特殊字符时Œ,返回不同:

ord("Œ") // return 197
chr(197) // return �

我所有的页面都是用 utf8 编码的。对于大多数特殊字符,此行为是相同的。

过去有人见过这个问题吗?我该如何解决?

4

2 回答 2

1

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
于 2015-09-24T21:09:03.393 回答
0

带问号的黑色菱形是显示问题。

在https://stackoverflow.com/a/38363567/1766831查看黑色钻石的详细信息 。有两种情况;看看哪个适合。

于 2016-10-17T23:00:47.423 回答