我试图理解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;。
答案 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
元素(可能在文档外部显示)。
iframe
元素中。通常情况下charset
属性很重要(并且在Firefox的该页面上对我有用),不会被BOM或HTTP标头覆盖。
答案 1 :(得分:0)
我认为这取决于浏览器。使用:
windows-1252
Chrome中的对希腊字母没有任何影响。但是,如果你在IE中尝试它,你会得到:
αβγδεζηθ