PHP不支持unicode字符集,那为什么unicode还能正确输出?

如果是汉字的话那就不应该正确输出啊。。而且比如PHP文件编码为UTF-8,那么内部的String类型也是UTF-8么?
我的回答不是。
那String既然不支持UTF-8,那显示的时候为什么又不会出现错误呢??

阅读 9.4k
5 个回答

Unicode是一种表示所有字母和符号的可靠方式。
PHP官方文档上说:“一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,”
意味着PHP只能支持八位二进制编码的字符集。而Unicode则是所有的。
charset=utf-8这一部分表明使用的是UTF-8字符编码,这是8位Unicode转换格式(8-bit UnicodeTransformation Format)的简写。
如此看来的话,是不是就能解释为什么PHP不能支持Unicode编码吧,能是能出来,只不过是些奇怪的字符。

PHP文件编码是u8,string储存的也是u8啊,不信你urlencode看一下好了。如果你页面的charset在meta里面设置了u8理所当然就不会显示错误。你试试设置成gbk,看他错误不错误。

我觉得它所指的不支持 是指不能作为变量名、函数名、参数名吧?
unicode作为字符串 保存起来的只是它的编码 php不解析他就不会出问题

PHP不支持unicode 是指PHP文件以Unicode编码保存不会被解析,
会直接作为静态页面输出源代码,
其实以UTF8带BOM格式保存也是有问题的。
PHP没有处理BOM头的机制,带BOM的编码格式都不行。
我们通常用UTF8无BOM格式,或者GBK(GB2312)

这个问题已经是3年前了,但肯定仍有新手不理解这里的含义,我写了篇文章阐述这里的原理,看完就明白了:https://whj.site/2018/06/28/p...

推荐问题