为了给HTML5 Doctype定义字符集,我应该使用哪种符号?
1.短的。
<meta charset="utf-8" />
2.长。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这两种形式的meta charset声明都是等价的,在不同的浏览器中应该是一样的。但是,在声明你的网页文件的字符集为UTF-8时,有几件事你需要记住。
1.1.以UTF-8编码保存你的文件,不要有字节顺序标记(BOM)。 2.2. 在你的HTML文件中使用meta charset声明编码(如上)。 3.3. 你的网络服务器必须提供你的文件,并在Content-Type HTTP头中声明UTF-8编码。
Apache服务器的配置是默认以ISO-8859-1来提供文件,所以你需要在你的.htaccess
文件中添加以下一行。
AddDefaultCharset UTF-8
这将配置Apache为您的文件提供服务,并在Content-Type响应头中声明UTF-8编码,但您的文件必须以UTF-8(不含BOM)开始保存。
Notepad不能在没有BOM的情况下以UTF-8编码保存文件。一个可以的免费编辑器是Notepad++。在程序的菜单栏上,选择"编码>以无BOM的UTF-8编码"。你也可以使用"Encoding > Convert to UTF-8 without BOM"打开文件并重新保存为UTF-8。
更多关于维基百科上的字节顺序标记(BOM)。
另一个选择短的原因是,它与你可能在标记中指定字符集的其他情况相匹配。比如说。
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
一致性有助于减少错误,使代码更具可读性。
注意,charset属性是不区分大小写的。你可以使用UTF-8或utf-8,然而UTF-8更清晰、更易读、更准确。
另外,绝对没有理由在元字符集属性或页面标题中使用UTF-8以外的任何值。从1999年的HTML4开始,UTF-8就是网络文档的默认编码,也是制作现代网页的唯一实用方法。
另外,你不应该在UTF-8中使用HTML实体。像版权符号这样的字符应该直接输入。你应该使用的唯一实体是5个保留标记字符:小于、大于、安培尔、素数、双素数。实体需要一个HTML解析器,你可能不一定想继续使用,它们会引入错误,使你的代码不容易阅读,增加你的文件大小,有时在各种浏览器中解码不正确,这取决于你使用的实体。学习如何键入/插入版权、商标、开口引号、闭口引号、撇号、em破折号、en破折号、子弹头、欧元以及你在内容中遇到的任何其他字符,并在代码中使用这些实际字符。Mac有一个字符查看器,你可以在键盘系统偏好中打开,你可以找到然后拖放你需要的字符,或者使用匹配的键盘查看器来查看要输入哪些键。例如,商标是Option+2。UTF-8包含了人类每种书面语言的所有字符和符号。因此,没有任何借口使用--而不是em破折号。学习标点符号和排版规则也是一个不错的主意......例如,知道句号要放在闭合引号内,而不是外面。
使用<meta>标签来表示内容类型和编码之类的东西是非常具有讽刺意味的。
具有讽刺意味,因为如果不知道这些东西,你就无法解析文件 来获得元标签的值。
不,事实并非如此。浏览器一开始就将文件解析为浏览器的默认编码,即UTF-8或ISO-8859-1。由于US-ASCII是ISO-8859-1*和UTF-8的一个子集,浏览器可以读取
,无论哪种方式都很好...都是一样的。当浏览器遇到元字符集标签时,如果该编码与浏览器已经使用的编码不同,浏览器就会以指定的编码重新加载页面。这就是为什么我们把元字符集标签放在顶部,就在头部标签之后,在其他东西之前,甚至在标题之前。这样你就可以在你的标题中使用UTF-8字符。你必须以UTF-8编码保存你的文件,不需要BOM。
这不是严格意义上的。如果你的文件中只有US-ASCII字符,你可以把它保存为US-ASCII,并以UTF-8的形式提供,因为它是一个子集。但是,如果有Unicode字符,你是正确的,你必须保存为UTF-8而不需要BOM。
如果你想要一个好的文本编辑器,能够将你的文件
以UTF-8保存,我推荐Notepad++。
在Mac上,可以使用Mac App Store上的Bare Bones TextWrangler(免费),或者Bare Bones BBEdit,它在Mac App Store上的价格是39.99美元......对于这样一个伟大的工具来说,非常便宜。在这两个应用程序中,在文档窗口的底部有一个菜单,你可以指定文档编码,你可以很容易地选择"UTF-8 no BOM"。当然,你也可以在首选项中把它设置为新文件的默认值。
但如果你的网络服务器在HTTP头中提供编码。
这是推荐的,这两个[元标签]都是不必要的。
这是不正确的。你当然应该在HTTP头中设置编码,但你也应该在meta charset属性中设置编码,这样页面就可以被用户保存起来,从浏览器中转移到本地存储,然后再打开,在这种情况下,编码的唯一指示就是meta charset属性。出于同样的原因,你也应该设置一个基标签......在服务器上,基标签是不必要的,但当从本地存储打开时,基标签可以使页面像在服务器上一样工作,所有的资产都已到位,因此没有断链。
AddDefaultCharset UTF-8
或者你可以直接改变特定文件类型的编码,像这样。
AddType text/html;charset=utf-8 html
为UTF-8和Latin-1(ISO-8859-1)文件提供服务的一个建议是,给UTF-8文件加上"text"扩展名,给Latin-1文件加上"txt."。
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
最后,考虑用Unix系统的行结尾来保存你的文件,而不是传统的DOS或(经典的)Mac系统的行结尾,这对我们没有帮助,而且可能会造成伤害,尤其是在我们离这些传统系统越来越远的时候。一个具有有效的HTML5、UTF-8编码和Unix行结尾的HTML文档是一项出色的工作。你可以在许多情况下分享、编辑、存储、阅读、恢复和依赖该文档。它是通用语言。它是数字纸张。