我在用户输入的数据上使用htmlenties(),在本地服务器上没有问题。然而,当我在我的网络托管服务器上运行代码时,字符编码似乎一团糟。
示例(使用字符串åäáâ);
Local server
[message] => åäö áàâ
Output = åäö áàâ
然而,在我的网络托管服务器上的结果是
Web hosting server
[message] => åäö áà â
Output = åäö áà â
将htmlenties()应用于字符串时会出现"字符集问题"。我该如何修复它?
我修复了它,这就是问题的原因;
根据php.net,5.4.0之前的php版本默认编码为"ISO-8859-1"。我所要做的就是简单地将其更改为中的"UTF-8";
htmlentities($string, ENT_COMPAT | ENT_HTML401, 'UTF-8');
(这是我尝试的第一件事,但我用小写写了"utf-8",但不起作用!!)
Unicode使用多个字节来表示每个字符。PHP将两个字节打印为单独的字符,除非您对其进行过滤
尝试
htmlentities(mb_convert_encoding($s,'utf8'));
确保您的PHP页面编码(页面本身)与htmlentities($string, ENT_QUOTES, 'UTF-8')
(在您的情况下为UTF-8
)是相同的字符集。此外,请确保php.ini中的default_charset = '';
,或将其注释掉,在default_charset
之前使用;
。