繁体   English   中英

带有特殊字符的 PHP 函数 chr 和 ord

[英]PHP function chr and ord with special chars

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

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

但是当我使用像Œ这样的特殊字符时,回报是不同的:

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

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

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

ord()chr()都使用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 中查看黑钻石的详细信息。 有两种情况; 看看哪个合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM