【发布时间】:2011-12-21 22:14:53
【问题描述】:
我有一个程序,其中包含在 ISO-8859-1 上无法正确显示的非 ASCII 字符。有没有办法使用 PHP 并以某种方式更改浏览器编码,并且即使编码是 ISO-8859-1 也允许字符在浏览器中正确显示?
非常感谢。
【问题讨论】:
-
那么如果不是 ISO-8859-1,那么 是 字符集是什么?
我有一个程序,其中包含在 ISO-8859-1 上无法正确显示的非 ASCII 字符。有没有办法使用 PHP 并以某种方式更改浏览器编码,并且即使编码是 ISO-8859-1 也允许字符在浏览器中正确显示?
非常感谢。
【问题讨论】:
使用header 函数发送(显式)HTTP Content-Type response header。
header('Content-Type: text/html; charset=ISO-8859-1');
…用您实际使用的任何编码替换 ISO-8859-1。希望那将是 UTF-8。
【讨论】:
你应该使用header函数
header( 'Content-Type: text/html; charset=ISO-8859-1');
注意:你应该确保没有内容被发送到浏览器或者你不能再修改标题,所以我建议你尽快在你的脚本中使用这个代码
【讨论】:
浏览器本身没有编码。它支持许多编码,并使用你告诉它的那个。如果您(在标题和/或 HTML 中)指定编码为 ISO-8859-1,那么您的文档应该采用该编码,并且您应该确保您发送的所有字符都采用正确的编码。所以你实际上应该发送 ISO-8859-1 字符。您不能发送对文档的不同部分使用不同编码的文档。
对于某些字符,您可以改为发布 HTML 实体。例如é 可以发送为é。无论编码如何,这都会起作用。
如果您可以选择,我会选择使用 UTF-8。它支持任何字符,您不必担心转义变音符号或其他特殊字符,除了那些对 HTML/XML 本身特殊的字符。
【讨论】:
正如其他人所说,使用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()。
【讨论】:
application/xml+xhtml 没有 text/xhtml。