在学习ZEND-CE考试时,我遇到了这个问题:
给出php.ini设置:
default_charset = utf-8
以下代码将在浏览器中打印什么?<?php header('Content-Type: text/html; charset=iso-8859-1'); echo '✂✔✝'; ?>
一个。乱码数据
B.&amp; #9986; &安培; #10004; &安培; #10013;
C.由于字符集不匹配导致的空行
预期答案是C,我预计它是A - 当我运行该代码时,我得到了乱码数据(答案A)!所以我想知道最近是否更改了PHP的行为,或者这是否是测试中的错误?
答案 0 :(得分:2)
我不知道PHP行为在这方面发生了变化。但是,HTML标准已经改变。
在HTML 4之前,数字字符引用(例如✂
)根据文档字符集(在内容类型标题字段中指定)进行解释。合理的是,由于ISO 8859-1中不存在代码点9986,因此不会打印任何内容。
从HTML 4开始,数字字符引用被解释为Unicode代码点。因此echo '✂✔✝';
应该打印✂✔✝
,无论内容类型标题字段对字符集的描述如何。如果不熟悉Unicode Dingbats块,则调用✂✔✝
乱码数据是合理的。