我在一个包含匈牙利名字的javascript文件中有一个数组,其特殊字母如:öőóáí.
var names = ["Aba", "Abád", "Abbás", "Abdiás", "Abdon", "Ábel", "Abelárd"];
(以上只是一个缩短的数组,整个长度约为3000项)
当我想在HTML文档中输出“names”的内容时,我得到了非ASCII字符的低沉字母.
如果我在输出它的UTF-8编码HTML中直接定义数组,我得到一个清晰的输出列表.就好像我在JavaScript文件中定义数组一样,我得到了一个低沉的内容.
见屏幕:http://screencast.com/t/YJ83K9Mgm
我检测到(记事本)JavaScript文件是ANSI编码.
问题:如何存储名称数组(或一般包含此特殊字母的代码),以便我可以在浏览器中正确输出它.
(实际上我正在使用MS Studio Express 2012进行编码.我找不到可以设置某些文件的编码类型的地方.)
这里是HTML HEADER中定义的阵列的简化代码:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Name List Trial</title>
<script src="nevekdata.js"></script>
<script>
// These are Hungarian first names just a few of them, the whole array is around 1400 long
// including letters like ö ő ó á stb.
// !!!!!!!!
// if I difine the "names" Array here, the array list is written out in the browser width the
// special letter seen correctly.
var names = ["Aba", "Abád", "Abbás", "Abdiás", "Abdon", "Abdullah", "Ábel", "Abelárd"];
// if I put it into a javascript file "nevekdata.js" I get muffled chars instead of the correct letters
function writeOutNames() {
outputnames.innerHTML = names.toString();
}
</script>
</head>
<body>
<button onclick="writeOutNames()">Write Out names</button>
<p></p>
<p id="outputnames"></p>
</body>
</html>
解决方法:
您已经自己说过,文件以ANSI格式保存,但之后您将其作为UTF-8提供.这会导致浏览器将您的ANSI编码文件视为UTF-8.
charset参数和标题只是浏览器提示文件所在的编码,它实际上并没有对文件的“物理”字节做任何事情.要使这一切正常工作,您需要charset参数和头文件并将文件物理编码为UTF-8字节.
您需要在记事本中将文件编码为UTF-8 ..,将文件保存为UTF-8而不使用BOM.