从 PHP 添加 Content-Type 标头

添加正确的 Content-Type 标头对于 PHP 应用程序正常运行很重要。
然而,令人惊讶的是,许多人仍然没有为他们希望提供的内容类型添加正确的字符编码。

在某些情况下,人们甚至选择用 HTML 编码的替代品替换某些字符,而不是学习如何正确选择和实现适当的字符编码。

在当今全球化的世界中,从新项目开始就支持多种语言通常是一种很好的做法。
很难判断何时可能需要支持来自其他语言的特殊字符,因此,从一开始就支持 UTF-8 是一个好主意。

例如,要支持丹麦语字母(Æ 、 Ø 和 Å ),我们可以在 Content-Type 标头字段中使用 UTF-8.

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

要添加内容类型,我们可以使用 PHP 的 header 函数。

Mime 类型的例子

mime-type 应该放在字符编码之前。
在上面的例子中,我们只使用了 text/html——但还有很多其他的!我在下面列出了一些常用的:

text/html对于.html页面(注意。扩展在Web上是可选的)。
text/plain纯文本文件。如果使用此HTML页面,则将显示HTML源,而无需语法突出显示。
image/jpegJPEG图像。也可以使用PHP输出图像。
image/pngPNG图像。我们还可以在PHP中输出PNG图像。
image/webpWEBP图像。压缩优于PNG和JPG。
image/avifA1/AVIF图像。压缩优于大多数其他格式,包括网页。
video/mp4视频格式。用于流媒体。
text/javascriptJavaScript文件。 USEF for客户端脚本。
text/cssCSS文件。用于控制网页的造型。
application/pdf用于提供.pdf文件。是的!我们也可能在PHP中创建.pdf!

选择正确的 MIME 类型很重要,这样浏览器才能知道如何显示内容。
PHP 不仅提供 HTML 和文本页面,它还可以显示图像和视频!

元中的字符编码不是必需的

如果我们希望用户在本地保存网页,那么我们应该注意某些系统可能不会以正确的字符编码保存文件。
在这些情况下,我们可以在 HTML 中包含一个 meta 元素,声明文件的字符编码:

<meta http-equiv="Content-type" content="text/html; charset=utf-8">

如果 meta 元素中声明的 Content-Type 与 HTTP 标头之间存在不匹配,则 HTML 验证器将显示类似于以下内容的错误:

HTTP 标头 (iso-8859-1) 中指定的字符编码与元素中的值 (utf-8) 不同。

此问题的解决方案是始终确保元数据和 HTTP 标头 Content-Type 匹配。

日期:2020-06-02 22:15:57 来源:oir作者:oir