apache - 网络服务器覆盖页面编码?

标签 apache encoding utf-8 character-encoding

我有 10 多年前用 PHP 手动编码的页面。

它们以旧的希伯来语编码 - windows-1255

最近,它们都坏了——文本显示为无法识别的 UTF-8 字符——里面有一个问号的菱形。

当我在浏览器(任何浏览器)中手动更改编码时,文本会正确显示。

我想可能是我主机上的服务器强制使用 UFT-8 编码。我已更改 .htaccess 以强制使用 windows-1255 编码,但它不起作用。

我尝试通过 W3C 验证页面,它认为该页面为 UTF-8

我下载了 XAMPP 并在本地运行服务器,但它仍在发生。

在过去的一年里,Apache 提供网页编码的方式有什么变化吗?

在查看所有页面并更改其编码之前,我想知道是否有一个全局“开关”可以翻转以便我的页面正确显示。

谢谢。

最佳答案

经过一番挣扎,一个善良的灵魂帮助我意识到它不是 Apache 覆盖 header 中的字符集,而是 PHP 本身。

添加

header('Content-Type: text/html; charset=windows-1255');

到 PHP 文件的顶部修复了问题。

据我了解,链条如下:
  • 默认情况下,Apache 发送带有 UTF-8 header 的内容
  • 如果在 .htaccess 中设置了另一个字符集,浏览器会接受它
  • 然后是 PHP 并按照 php.ini
  • 中的 default_charset 指定的方式强制使用 header 中的字符集。

    您在页面到达浏览器之前定义的任何内容都将被忽略。

    关于apache - 网络服务器覆盖页面编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41478588/

    相关文章:

    apache - 删除 Content-Disposition 会导致 ClientAbortException : java.net.SocketException:套接字写入错误:连接被对等方中止

    php未加载但代码存在于查看源页面中

    php - 符号链接(symbolic link)在 apache 2.2 上不起作用

    javascript - Angular 在 ng-src 中对 url 进行编码,并将 '/' 替换为 %2F,将 '?' 替换为 %3F

    utf-8 - react native : How to decode base64 encoded string?

    java - 如何使用 Gson 处理具有时间戳的 Json 响应? java.lang.IndexOutOfBoundsException

    python - csv 文件土耳其语字符未显示

    ruby - 如果在使用 rspec 的 sinatra 应用程序中响应字符集是 utf-8,我怎么能得到 "test"?

    pdf - 如何从 php.ini 启用 mbstring?

    java - ISO-8858-1 到 UTF-8 仅在 URL 中,仅无效字符