2014-02-27 76 views
0

我拉下面的字符串從數據庫'86,並通過出於安全原因的逃生功能運行它,因爲這是用戶定義的數據:撇號數字字符引用在顯示時未轉換嗎?

htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); 

我回來的回報是'86

所以htmlspecialchars是逃避apostraphe並將其轉換成其numeric character reference(而不是其character entity reference,我猜是因爲沒有一個撇號)。

我遇到的問題是,當文本顯示在瀏覽器上時,瀏覽器不會將其顯示爲',而只是打印'86。查看該頁面的源代碼以確認它源於'86(因此它不是雙編碼的)。我嘗試了幾個瀏覽器。

來自服務器的內容類型標頭正確設置爲text/html; charset=utf-8

任何想法爲什麼它不能正確顯示?

+2

看起來像是一個「演示或沒有發生」的情況。如果接收的內容實際上被視爲HTML,則在解析文檔時HTML實體將被解碼。 –

+0

事實上,我正在準備演示時忽略了一些我發現的東西:) – Brian

回答

1

跳過槍,看起來好像它實際上被輸出爲'86。我在Chrome瀏覽器中查看網絡檢查員,但實際上並未查看網頁源代碼。網絡檢查員正在將&轉換爲&,導致我的困惑。

相關問題