【问题标题】:Change browser encoding with PHP?用 PHP 更改浏览器编码?
【发布时间】:2011-12-21 22:14:53
【问题描述】:

我有一个程序,其中包含在 ISO-8859-1 上无法正确显示的非 ASCII 字符。有没有办法使用 PHP 并以某种方式更改浏览器编码,并且即使编码是 ISO-8859-1 也允许字符在浏览器中正确显示?

非常感谢。

【问题讨论】:

  • 那么如果不是 ISO-8859-1,那么 字符集是什么?

标签: php browser encoding


【解决方案1】:

使用header 函数发送(显式)HTTP Content-Type response header

header('Content-Type: text/html; charset=ISO-8859-1');

…用您实际使用的任何编码替换 ISO-8859-1。希望那将是 UTF-8。

【讨论】:

    【解决方案2】:

    你应该使用header函数

    header( 'Content-Type: text/html; charset=ISO-8859-1');
    

    注意:你应该确保没有内容被发送到浏览器或者你不能再修改标题,所以我建议你尽快在你的脚本中使用这个代码

    【讨论】:

      【解决方案3】:

      浏览器本身没有编码。它支持许多编码,并使用你告诉它的那个。如果您(在标题和/或 HTML 中)指定编码为 ISO-8859-1,那么您的文档应该采用该编码,并且您应该确保您发送的所有字符都采用正确的编码。所以你实际上应该发送 ISO-8859-1 字符。您不能发送对文档的不同部分使用不同编码的文档。

      对于某些字符,您可以改为发布 HTML 实体。例如é 可以发送为é。无论编码如何,这都会起作用。

      如果您可以选择,我会选择使用 UTF-8。它支持任何字符,您不必担心转义变音符号或其他特殊字符,除了那些对 HTML/XML 本身特殊的字符。

      【讨论】:

        【解决方案4】:

        正如其他人所说,使用header 函数:

        header('Content-type: text/html; charset=ISO-8859-1');
        

        或者,如果您想提供有效的 XHTML 文件而不是标准的 HTML

        header('Content-type: application/xml+xhtml; charset=ISO-8859-1');
        

        可以稍后在脚本中调用标头,这与 RageZ 所说的不同,但您需要为此启用 output buffering,使用 ob_start()

        【讨论】:

        • XHTML 的注册 MIME 类型是 application/xml+xhtml 没有 text/xhtml
        • 您在两个示例中都有语法错误,因为您无法终止其中的字符串。
        • 修复了 XHTML 内容类型,字符串被正确终止。很抱歉:P
        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 2011-11-12
        • 2021-03-26
        相关资源
        最近更新 更多