0

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

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

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

Output = åäö áàâ

但是我的网络托管服务器上的结果是

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

Output = åäö áà â

将 htmlentities() 应用于字符串时会发生“字符集问题”。我如何解决它?

4

3 回答 3

3

我修复了它,这就是问题的原因;

根据php.net,5.4.0 之前的 PHP 版本将“ISO-8859-1”作为默认编码。我所要做的就是简单地将其更改为“UTF-8”,如下所示;

htmlentities($string, ENT_COMPAT | ENT_HTML401, 'UTF-8');

(虽然这是我尝试的第一件事,但我用小写写了'utf-8',这不起作用!!)

于 2013-07-24T01:55:03.610 回答
0

Unicode 使用多个字节来表示每个字符。除非您过滤它,否则 PHP 会将这两个字节打印为单独的字符。

尝试

htmlentities(mb_convert_encoding($s,'utf8'));
于 2013-07-24T00:32:40.253 回答
0

确保您的 PHP 页面编码(页面本身)htmlentities($string, ENT_QUOTES, 'UTF-8')您的情况中的UTF-8. 另外,请确保在 php.ini 中,或使用beforedefault_charset = '';将其注释掉。;default_charset

于 2013-07-24T00:34:50.090 回答