2014-10-08 107 views
-1

我而動PHP應用程序到另一臺服務器,我有字符解碼的一些問題:html_entity_decode工作不正常

舊的服務器(CentOS的使用Plesk面板):

echo htmlentities('ú'), ENT_QUOTES, 'UTF-8'); // Result ú 
echo html_entity_decode('&uacute', ENT_QUOTES, 'UTF-8'); // Result ú <= expected 

新服務器(Debian專用服務器,全新安裝):

echo htmlentities('ú'), ENT_QUOTES, 'UTF-8'); // Result &uacute;  
echo html_entity_decode('&uacute', ENT_QUOTES, 'UTF-8'); // Result ú <= not expected 
echo html_entity_decode('&uacute', ENT_QUOTES, 'ISO-8859-1'); // Result ú <= expected 

爲什麼會發生這種情況?也許服務器配置問題?

+1

你與你的HTML輸出發出錯誤的字符集符。 – mario 2014-10-08 11:48:25

+0

是的,但我想知道爲什麼相同的功能在一臺服務器上按預期工作,而不是在新服務器上。 – 2014-10-08 12:07:53

+0

你爲什麼責怪這個功能? **您的** HTML輸出在任何地方都不包含charset =或encoding =屬性。如果您發送UTF-8文本但保留html頁面或http標題聲明Latin-1,那麼它們不會被錯誤地渲染。 – mario 2014-10-08 14:43:04

回答

1

嘗試以下

echo htmlentities('ú', ENT_QUOTES, 'UTF-8'); 
echo html_entity_decode('&uacute;', ENT_QUOTES, 'ISO-8859-1'); 
+0

如果我在新服務器上測試這些行,resutl是預期的,但如果我在舊的測試它們,我會得到錯誤的結果。我需要知道爲什麼我在兩臺服務器上都有不同的結果。 – 2014-10-08 12:09:48