2014-10-08 105 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