2011-04-28 80 views
0

我对编码世界以及PHP和XHTML都很陌生。我只是通过元标记的细节,并不理解属性http-equiv,也不知道什么是字符集以及UTF-8的值是什么,例如, <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />什么是HTTP标头?什么是字符集?

回答

5

Joel Spolsky有一篇很好的文章讨论了charsets。请看:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

对于HTTP标头,快速谷歌搜索“理解HTTP标头”打开了想象中的那么形容他们一些好文章。这里有一个:HTTP Headers for Dummies

简而言之,HTTP头基本上是一些小的消息,它会发送到用户的网络浏览器,告诉浏览器它将接收的输出(即它是网页,文件,图像;它应该是缓存等),或者应该由客户端浏览器保存的cookies等内容。

HTTP头也从用户的网页浏览器发送回服务器。最明显的例子是cookie,每个由浏览器保存的cookie都应该在每个HTTP请求中发送回服务器。

就你而言,你可能正在讨论一个特定的HTTP头,它定义了页面的字符集。 <meta http-equiv="">标签用于模拟HTTP标头。例如,如果您有一个静态HTML页面,并且想要利用特定的HTTP标头,但无法在Web服务器中对其进行配置,则可以使用<meta http-equiv="">标签来实现相同的结果。

+0

@Ryan - 谢谢瑞恩。快速浏览一下文章,看起来需要一段时间才能理解这些概念。我希望如果有人能够用最简单的例子向我解释,那么如果我能理解这一点,我就能理解更复杂的概念。 – PeanutsMonkey 2011-04-28 01:46:11

+0

Gotcha。我在我的答案中添加了更多内容来解释您的问题的HTTP标头部分,但我认为您真的对字符集感到疑惑。这篇文章可能看起来令人望而生畏,但我认为它很容易理解(只是很长)。 – Ryan 2011-04-28 01:54:37

+0

@瑞恩 - 感谢瑞恩。这很有帮助。纠正我,如果我错了。当客户端发出请求时,HTTP头只能从Web服务器发送到客户端浏览器。那是对的吗? 当你说**模拟HTTP标头**这是什么意思?什么是字符集,它是如何使用的?我问的原因是我也看到它在PHP中引用。 – PeanutsMonkey 2011-04-28 01:56:02

1

@Ryan:很棒的链接。我希望在12年前我开始阅读这篇文章,然后开始实施一个大型国际CMS。

简而言之,当浏览器接收到HTTP响应流(请求的网页)时,它看到的只是一个字节序列。由于字节可能意味着不同的字符,具体取决于服务器使用的编码,因此在解释字节流时,浏览器使用元标记中指定的编码非常重要。如果服务器使用了与元标记不同的编码,则会看到乱码。

相反,与网页POST相关的HTTP请求也有一个由浏览器透明地提供的编码,因为服务器需要知道如何解释发送的任何表单数据。