在PHP中,当我使用ord
函数来捕获我的角色的ASCII代码时,我得到了这样的行为:
ord("a") // return 97
chr(97) // return a
但是当我使用像Œ
这样的特殊字符时,回报是不同的:
ord("Œ") // return 197
chr(197) // return �
我的所有网页都以utf8编码。对于大多数特殊字符,此行为是相同的。
过去有人见过这个问题吗?我该如何解决?
答案 0 :(得分: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
答案 1 :(得分:0)
带有问号的黑色钻石是显示问题。
在https://stackoverflow.com/a/38363567/1766831中查看黑钻的详细信息。有两种情况;看哪一个适合。