PHP 5.6 字符集头回到 ISO-8859-1?

标签 php .htaccess utf-8 character-encoding

我的托管服务最近将我的网站服务器从 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/

相关文章:

php - 如何在MySQL 5中选择一个类别和子类别中的所有文章

php - 插入...重复 key 更新(PHP : PDO)

.htaccess - 在没有 php 扩展的情况下重写友好的 url

php - htaccess 中的自定义 503 页面为 "/path/to/index.php?maintenance"?

javascript - 将 javascript 生成的文档的字符集更改为 utf8

python - unicode和python问题(获取unicode码表)

php - 如何更好地组织所有命名空间?

php - WAMP .htaccess 在从 XAMPP 移动后出现内部服务器错误

utf-8 - 处理后缀 sendmail 中的变音符号(非 ASCII 字符)(在控制台上发送邮件)

php - 为什么主键值上的 is_int 返回字符串?