unicode中的字符串长度不同

Imr*_*hsh 7 php unicode

为什么以下字符串的长度不同,尽管字符串中的字符数相同

echo strlen("? ? ? ? ? ? ? ? ?")."<BR>";
echo strlen("? ? ƒ ? ? ? ? ? ?")."<BR>";
Run Code Online (Sandbox Code Playgroud)

输出

35
26
Run Code Online (Sandbox Code Playgroud)

Nie*_*sol 10

第一批字符每个占用三个字节,因为它们在39,000字的字符列表中是向下的,而第二组每个只占用两个字节,大约为400字节.(每个字符串所需的字节数/八位字节数)在UTF-8维基百科文章中讨论了字符.)

strlen计算字符串占用的字节数,这会在Unicode中产生奇怪的结果.


Yah*_*hia 9

我不是PHP专家,但它似乎strlen计算字节...有mb_strlen计数字符...

编辑 - 有关多字节编码如何工作的进一步参考,请参阅http://en.wikipedia.org/wiki/Variable-width_encoding和esp.UTF8见http://en.wikipedia.org/wiki/UTF-8