我的托管服务最近将我的网站服务器从 PHP 5.3 升级到 5.6,它破坏了我的网站,因为我所有的 html/php 文件都是 ISO-8859-1,但该网站现在正在提供响应 header ,表明
charset=UTF-8
我知道我最终应该转向 UTF-8 文件,但同时我想要一个快速修复。我尝试了以下修复:
<meta charset="ISO-8859-1"> (in the <head> tag of html files)
AddDefaultCharset ISO-8859-1 (in .htaccess)
default_charset= "ISO-8859-1" (in php.ini)
...但这些都没有影响响应头字符集。
在测试中唯一有效的是将此行添加到我的大多数(不是全部)页面使用的 header.php 文件中:
header('Content-Type: charset=ISO-8859-1');
但我不想搜索所有落后的文件并将其添加到每个文件中。如果我要寻找它们并以这种方式触摸它们,我不妨将所有文件转换为 UTF-8。
所以......我想知道是否有人会知道为什么我的 PHP.ini 或 htaccess 修复不能普遍地完成这项工作?这些不起作用的事实是否表明其他一些 Apache 设置正在控制字符集的响应 header ?
提前致谢。
更新:我什至尝试添加
addCharset ISO-8859-1 .html .htm .php
.htaccess 但没有快乐。
最佳答案
Spiele-Umsonst 的回答对我不起作用(在 Apache 上),但这确实有效:
php_value default_charset Off
AddDefaultCharset ISO-8859-1
“Off”是“AddDefaultCharset”的有效值,所以我猜对 default_charset 也是如此。 “无”无效,所以我想这就是它不起作用的原因。我认为这可能取决于某些服务器配置或使用的 http 守护进程。
Apache Web 服务器的进一步阅读:http://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset
关于PHP 5.6 字符集头回到 ISO-8859-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290473/