You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PHP文档称PHP不支持Unicode?实际可处理UTF-8字符串

为什么PHP文档称PHP不支持Unicode?

PHP文档中提到:

这意味着PHP仅支持256字符集,因此不提供原生Unicode支持

但实际使用中,我们可以直接将UTF-8字符串字面量赋值给变量:

$str = "γεια";

也能借助相关函数处理UTF-8字符串:

echo mb_strlen($str, "UTF-8");

出现这种看似矛盾的情况,核心原因在于PHP原生字符串的本质是字节数组,而非Unicode字符序列:

  • PHP的原生字符串函数(如strlen())是按字节处理的,它不会识别Unicode字符。比如上面的$str,用strlen()会返回8(每个希腊字符在UTF-8中占2字节),而非实际的4个字符,这就是原生不支持Unicode的体现。
  • 你能直接赋值UTF-8字符串,只是因为PHP原封不动存储了这些字节,它本身并不“知晓”这是Unicode编码的字符。
  • mb_strlen()这类函数属于PHP的多字节字符串扩展(mbstring),是额外提供的工具,需要你手动指定编码才能正确解析Unicode字符,并非PHP核心原生具备的能力。

简言之:PHP原生只处理字节,不理解Unicode字符;UTF-8字符串的正常使用依赖扩展的编码解析能力,而非PHP本身的原生Unicode支持。

内容的提问来源于stack exchange,提问作者user8240761

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:45:30