PHP 5.6 Charset Header返回ISO-8859-1?

Avi*_*ech 2 php .htaccess utf-8 character-encoding

我的托管服务最近将我的网站服务器从PHP 5.3升级到5.6,它打破了我的网站,因为我的所有html/php文件都是ISO-8859-1,但网站现在正在提供响应标头指示

charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

我知道我最终应该转向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)
Run Code Online (Sandbox Code Playgroud)

...但这些都没有影响响应标头字符集.

测试中唯一有效的方法是将此行添加到我的大多数(不是全部)页面使用的header.php文件中:

header('Content-Type: charset=ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)

但是我不想搜索所有的straggler文件并将其添加到每个文件中.如果我要打猎并以这种方式触摸它们,我不妨将所有文件转换为UTF-8.

所以...我想知道是否有人会知道为什么我的PHP.ini或htaccess修复不能普遍完成这项工作?这些不起作用的事实是否表明某些其他Apache设置控制了charset的响应头?

提前致谢.

更新:我甚至尝试添加

addCharset ISO-8859-1 .html .htm .php 
Run Code Online (Sandbox Code Playgroud)

到.htaccess但没有快乐.

Chr*_*icz 6

Spiele-Umsonst的回答对我不起作用(在Apache上),但是这样做了:

php_value default_charset Off
AddDefaultCharset ISO-8859-1
Run Code Online (Sandbox Code Playgroud)

"Off"是"AddDefaultCharset"的有效值,所以我猜对于default_charset也是如此."无"是无效的,所以我猜这就是为什么它不起作用.我认为这可能取决于一些服务器配置或使用的http deamon.

进一步阅读Apache Web服务器:http://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset