在哪里放PHP编码类型头?

时间:2011-03-22 12:33:43

标签: php character-encoding

我正在学习如何处理UTF8字符集,建议在PHP脚本中的输出头中显式设置编码类型,如下所示:

header('Content-Type: text/html; charset=utf-8');

我的问题是关于我应该放置此标题的位置。我有一个包含在每个脚本中的配置文件,并且首先运行。我应该将它放在该文件的顶部,以便在每个php文件中首先包含此标头吗?

这是否会影响我设置其他标头的能力,包括标题位置重定向到线?或者我应该在任何html输出之前放置它,例如我的模板文件的渲染?也就是说,在所有其他php处理之前,这个标题是否就位,这样做的后果是什么?它会影响服务器端的任何内容,还是只影响输出的编码?

感谢!

5 个答案:

答案 0 :(得分:4)

尽管此标头的早期设置不会影响任何服务器端或其他类型的标头,但您的问题是假设您的代码输出的唯一内容是 html 类型。

但是,一般的PHP应用程序有时会输出其他类型的内容,例如application/pdfapplication/excel或其他类型。

因此,在 html 输出之前发送它似乎是正确的位置。

答案 1 :(得分:3)

您唯一的限制是在调用print函数之前不输出任何内容(echoheader,...)。除此之外,您可以在任何地方和任意次数调用该功能(之后可以设置其他标题)。

答案 2 :(得分:3)

我只是推荐这个作为替代品。但是可以使用:

在php.ini中修复设置
default_mimetype = "text/html; charset=UTF-8"

在共享托管服务器上不常见,其中一些用户可能依赖于L1。但是,如果您使用自己的服务器并且想要确保无论代码和任何PHP脚本被调用都正确设置,那么this is your option

答案 3 :(得分:1)

您可以在开始发送页面文本之前将header指令放在任何位置。相对于其他标题的顺序不重要;但是,如果你发送了一个页面文本字符,那么PHP会给你一个错误。

请注意,“发送页面文本”有时会由于其他错误消息或由于<?php?>之前或之后的空格而无意中发生。标签等。

答案 4 :(得分:0)

只要它在-tags中,并且在创建任何输出之前(echo,print,print_r等等 - 或者在-tags之前的任何HTML)。

OKAY方法:

<?php
$var = "hello world";
$var2 = "Goodbye world!";

header();

echo $var2;
?>

OKAY方法:

<?php
header();
$var = "hello world";
$var2 = "Goodbye world!";



echo $var2;
?>

不好的方法:

<?php
$var = "hello world";
$var2 = "Goodbye world!";

echo $var2;
header();
?>

希望这有帮助!