我有十多年前用
PHP手动编码的页面.
它们以旧的希伯来语编码–windows-1255编码
最近,他们都被打破了 – 文字显示为无法识别的UTF-8字符 – 里面有问号的钻石.
当我在浏览器中手动更改编码时 – 任何浏览器 – 文本都会正确显示.
我想也许我主机上的服务器强制使用UFT-8编码.我已经更改了.htaccess以强制执行windows-1255编码,但它无法正常工作.
我尝试通过W3C验证页面,它将页面视为UTF-8
我下载了XAMPP并在本地运行服务器,但它仍在发生.
在过去一年中,Apache正在提供有关编码的网页的方式有什么变化吗?
在我浏览所有页面并更改其编码之前,我想知道是否有一个全局“开关”我可以翻转以便我的页面正确显示.
谢谢.
最佳答案 经过艰苦的努力,一个善良的灵魂帮助我意识到,不是Apache在标题中覆盖了charset而是PHP本身.
添加
header('Content-Type: text/html; charset=windows-1255');
到PHP文件的顶部修复了问题.
据我所知,链条如下:
>默认情况下,Apache使用UTF-8标头发送内容
>如果.htaccess中设置了另一个字符集,浏览器会接受它
>然后是PHP并在php.ini中的default_charset指定的标题中强制charset
您在页面到达浏览器之前定义的任何内容都将被忽略.