use*_*516 6 php special-characters
我有一个网站,我使用PHP包含部分,而不是每个页面都复制代码.
但是,最近我的webhost将PHP升级到5.6,现在我所有的Æ,Ø和Å都给了我替换字符( ).
我没有运行任何数据库,并在html中设置charset没有帮助.
我对PHP很缺乏经验,所以我不知道如何修复它.
拜托,任何帮助都会很棒!
从php 5.5升级后我遇到了同样的问题.到5.6.
通过在我的脚本中将default_charset设置为空字符串来解决它:
ini_set("default_charset", "");
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经加入php.ini,则可以设置default_charset = "".
更多信息:https://www.saotn.org/php-56-default_charset-change-may-break-html-output/
PHP 5.6 将默认值更改default_charset为UTF-8。该值应该更好地设置。
如果你的 php 文件的字符集是ISO-8859-1(全部在目录中),你可以轻松地将 .htaccess 文件放在根目录中:
php_value default_charset ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
如果只有部分文件采用 ISO-8859-1,您可以轻松地在 php 文件的第一行发送标头(不需要 default_charset):
<?php
header('Content-Type: text/html; charset=iso-8859-1');
?>
Run Code Online (Sandbox Code Playgroud)
或者将 php 文本文件的编码转换为 utf8 并且不更改默认值。
目前最好的办法是降级到 PHP 5.5 或 5.4,因为 CBroe 在他的评论中解释说,PHP 5.6 现在将默认字符集设置为 UTF-8,而许多网站仍然没有准备好。迁移到新服务器后,我遇到了同样的问题,因此我降级到 PHP 5.5,所有特殊字符自动再次正确显示。如果您使用 WHM,请使用 EasyApache 重建 Apache,然后在出现提示时选择所需的 PHP 版本。
我个人认为 PHP 开发人员应该更好地警告用户,我的意思是,明确升级到版本 5.6 可能会给非 UTF-8 就绪的网站/应用程序带来特殊字符问题。他们将 UTF-8 强加给全球数百万开发者的做法太快,甚至太激进。