2013-07-25 27 views
1

攻讀了Zend-CE考試,我碰到這個問題就來了:PHP的行爲有改變嗎?

給出的php.ini中設置:
DEFAULT_CHARSET = UTF-8
什麼將在瀏覽器下面的代碼打印?

<?php 

header('Content-Type: text/html; charset=iso-8859-1'); 

echo '&#9986;&#10004;&#10013;'; 

?> 

A.亂碼數據
B. &#9986; &#10004; &#10013;
C.一個空行,由於字符集不匹配

預期的答案是C,我希望它是A - ,當我跑的代碼,我得到了亂碼數據(回答)!所以我想知道最近PHP的行爲是否發生了變化,或者如果這是測試中的錯誤?

+0

你從哪裏找到該問題及其錯誤答案? – deceze

+0

來自可疑網站http://testpassport.de(你可以在這裏閱讀摘錄:http://pdf.testpassport.de/200-530.pdf) - 這是我的教練推薦的... – MBaas

+2

是的,我看到他們有關於Zend-Technologies認證的「關於autoritärstenInformationen」的消息。我不認爲這意味着他們認爲這意味着:) – Oswald

回答

2

我不知道在這方面PHP的行爲已經改變。但是,HTML標準已經改變。

之前HTML 4,數字字符引用如&#9986;其中相對於所述文件的字符集(其在內容類型頭字段中指定)的解釋。這是合理的,因爲ISO 8859-1中不存在代碼點9986,所以不會打印任何內容。

由於HTML 4,數字字符引用被解釋爲Unicode代碼點。因此echo '&#9986;&#10004;&#10013;';應該打印✂✔✝,而不管內容類型標題字段對字符集的說明如何。如果不熟悉Unicode Dingbats塊,可以調用✂✔✝亂碼數據是合理的。

+0

謝謝你。測試應該涵蓋PHP 5.3,所以我想我們可以安全地假設HTML4行爲:-) – MBaas