尝试以下代码:
<?php
echo "ORD ~ = ".ord("~");
基于扩展的ASCII表 - &gt; http://www.ascii-code.com/输出
ORD ~ = 126
哪个是正确的,但是当在扩展的ASCII表格中输出内容时,如Ø:
<?php
echo "ORD Ø = ".ord("Ø");
给出:
ORD Ø = 195
在链接的扩展ASCII表中,'Ø'的正确代码是216.对于√( ord(“√”)输出226
而226的正确扩展ASCII字符为 且√不是甚至在表中。)
所以我的问题是,因为PHP字符串基本上是一个字符串数组(第一个字符为$ str [0],第二个字符为$ str [1],C之类等等),以及PHP没有 char 类型,PHP在处理1字节字符时如何单独处理它,例如使用前面的ord()函数和pack()和unpack()函数?
PHP char未签名还是已签名?有什么区别?
我应该如何理解PHP手册中的这句话A string is series of characters, where a character is the same as a byte. This means that PHP only supports a 256-character set
?
256-character
意味着它支持扩展的ASCII?但是为什么那些在扩展ASCII字符上调用ord()的差异呢?
感谢您的关注!
答案 0 :(得分:1)
现在的PHP核心没有字符编码的概念。字符串只是 - 手动状态 - 字节序列(无符号8位)。输出媒体如何插入这些字节是......超出php
在你的例子中,Ø可能是utf-8编码的,即两个字节195和152
PHP不知道编码将这两个字节视为两个单独的单字节“字符”。 ord()
只考虑字符串中的第一个“字符”,因此您获得195
所以答案是:unsigned,根本没有charset ......只是带有长度指示符的字节。