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