HTML字符实体和字符编码集

Mik*_*ore 9 html character-encoding html-entities

在HTML文档中包含HTML实体时,实体是否需要来自指定文档使用的相同字符编码集?

例如,如果我要在指定为的HTML文档中使用版权符号UTF-8,是否有必要使用Unicode HTML实体(©)或者是否可以使用其他实体,例如ASCIIHTML实体(©)?

请解释一下你的答案.我知道它会"起作用",但是有一种情况它会起作用吗?

谢谢!

Tha*_*tos 10

©©指定相同的字符 - 169相当于十六进制A9.这些都指定了版权符号.HTML中的字符实体始终引用Unicode代码点,这在HTML 4标准中有所涉及.因此,即使您的字符集发生更改,您的实体仍会引用相同的字符.

这也意味着您可以编码实际未出现在您选择的字符集中的字符.我刚刚在ISO-8859-1字符集中创建了一个文档,但它包含了一个希腊语lambda.此外,ASCII不能直接编码版权符号,但它可以通过字符实体.

编辑:阅读其他答案的评论,我想澄清一点.如果您使用UTF-8作为文档的字符编码,则可以在原始HTML源代码中按原样编写版权符号.(你需要找到一些方法来输入它,当然:复制粘贴是常用的.)UTF-8允许你直接编码你想要的任何符号.ISO-8859-1更受限制,而ASCII更是如此.例如,在我的HTML中,如果我的文档是UTF-8文档,我可以这样做:

<p>Hi there. This document is ©2010. Good day!</p>
Run Code Online (Sandbox Code Playgroud)

要么:

<p>Hi there. This document is &#xA9;2010. Good day!</p>
Run Code Online (Sandbox Code Playgroud)

要么:

<p>Hi there. This document is &copy;2010. Good day!</p>
Run Code Online (Sandbox Code Playgroud)

第一个仅在字符集支持"©"时有效.其他两个总是有效的,但可读性较差.无论你使用什么文本编辑器,如果值得它的重量,应该能够告诉你它编码文档的字符集.

如果这样做,您需要确保您的Web服务器通知客户端正确的字符集,或者您的文档使用以下内容声明它:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Run Code Online (Sandbox Code Playgroud)

我在那里使用UTF-8作为例子.XHTML应该在开始<?xml ... ?>标记中包含字符集.