HTML <meta />和<script> charset属性</script>

时间:2014-09-12 07:58:28

标签: character-encoding

我试图理解charset属性是如何工作的,但我的charset属性被忽略了。我将添加我的例子。

1)我有一个带有char属性的元标记的HTML文件。

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<meta charset="windows-1254">
</head>
<body>
<p>Αποτελεί την πλέον επιτυχημένη ομάδα στην ιστορία του</p>
</body>
</html>

使用选项&#34; UTF-8&#34;保存文件。但是我要求浏览器以土耳其语编码显示它(Windows-1254)。我展示的是正确的版本,希腊字母正确显示。字符集=&#34;窗户-1254&#34;似乎被忽略了

2)我有另一个脚本标记示例。我使用选项&#34; UTF-8&#34;

保存的JavaScript文件
document.write("Αποτελεί την πλέον επιτυχημένη ομάδα στην ιστορία του");

调用它的HTML文件使用带有字符集值windows-1254的标记。 HTML文件使用选项ANSI保存(它似乎将其保存为windows-1254)

<!DOCTYPE html>
<html>
<head>
<title>JS Dosyası Örneği</title>
</head>
<body>
<script src="javascript.js" charset="windows-1254"></script>
</body>
</html>

JS文件显示正确,charset =&#34; windows-1254&#34;似乎再次被忽视了。

3)我有另一个脚本标记示例。我使用选项&#34; UTF-8&#34;

保存的JavaScript文件
document.write("Örnek yazı");

调用它的HTML文件使用带有字符集值windows-1254的标记。 HTML文件使用选项ANSI保存(它似乎将其保存为windows-1254)

<!DOCTYPE html>
<html>
<head>
<title>JS Dosyası Örneği</title>
</head>
<body>
<script src="javascript.js" charset="windows-1254"></script>
</body>
</html>

JS文件显示正确,charset =&#34; windows-1254&#34;似乎没有被忽略,如果我删除charset =&#34; windows-1254&#34;它工作正常。我没有看到charset属性的影响。 (它听起来并不奇怪,似乎IE检测到页面是在windows-1254中编码的,而且JS文件没有区别)

4)最后一个例子来自W3Schools:

http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_script_charset

如果我按照建议改变字符集值,希腊字母在IE中没有正确显示。似乎charset属性似乎没有被忽略。

问题是&#34;为什么我的属性被忽略而W3Schools的例子没有?&#34;。

2 个答案:

答案 0 :(得分:2)

1)您似乎使用记事本保存了文件。将文件保存为UTF-8时,记事本会在开头插入BOM(字节顺序标记)。 BOM充当“签名”,使浏览器将文件视为UTF-8编码,无论如何。这种实际行为记录在HTML5中(8.2.2.2 Determining the character encoding;技术性警报!)。因此忽略meta标记。

2)如1.在JS文件开头的BOM使浏览器将其视为UTF-8编码。 HTML文档的编码与此无关。

3)由于JS文件已保存为带有BOM的UTF-8,因此可以独立于charset属性进行正确处理。在这个简单的示例中,HTML文件的编码和有关其编码的信息仅影响其title元素(可能在文档外部显示)。

4)W3schools不可靠且令人困惑,应该避免。目前尚不清楚他们想说什么以及他们在做什么,但他们似乎以某种方式将测试文档呈现在iframe元素中。通常情况下charset属性很重要(并且在Firefox的该页面上对我有用),不会被BOM或HTTP标头覆盖。

答案 1 :(得分:0)

我认为这取决于浏览器。使用:

windows-1252
Chrome中的

对希腊字母没有任何影响。但是,如果你在IE中尝试它,你会得到:

αβγδεζηθ