htmlentities()在Web托管服务器上无法正常工作

时间:2013-07-24 00:28:47

标签: php character-encoding

我在用户输入的数据上使用htmlentities(),在我的本地服务器上没有问题。但是,当我在我的网络托管服务器上运行代码时,字符编码似乎搞砸了。

示例(使用字符串åäöáàâ);

Local server
[message] => åäö áàâ

Output = åäö áàâ

然而,我的网络托管服务器上的结果是

Web hosting server
[message] => åäö áàâ

Output = åäö áà â

将htmlentities()应用于字符串时会出现“charset问题”。我该如何解决?

3 个答案:

答案 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,或将其注释掉。