我正在学习如何处理UTF8字符集,建议在PHP脚本中的输出头中显式设置编码类型,如下所示:
header('Content-Type: text/html; charset=utf-8');
我的问题是关于我应该放置此标题的位置。我有一个包含在每个脚本中的配置文件,并且首先运行。我应该将它放在该文件的顶部,以便在每个php文件中首先包含此标头吗?
这是否会影响我设置其他标头的能力,包括标题位置重定向到线?或者我应该在任何html输出之前放置它,例如我的模板文件的渲染?也就是说,在所有其他php处理之前,这个标题是否就位,这样做的后果是什么?它会影响服务器端的任何内容,还是只影响输出的编码?
感谢!
答案 0 :(得分:4)
尽管此标头的早期设置不会影响任何服务器端或其他类型的标头,但您的问题是假设您的代码输出的唯一内容是 html 类型。
但是,一般的PHP应用程序有时会输出其他类型的内容,例如application/pdf
,application/excel
或其他类型。
因此,在 html 输出之前发送它似乎是正确的位置。
答案 1 :(得分:3)
您唯一的限制是在调用print
函数之前不输出任何内容(echo
,header
,...)。除此之外,您可以在任何地方和任意次数调用该功能(之后可以设置其他标题)。
答案 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();
?>
希望这有帮助!