我在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
我检测到(Notepad ++)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>
答案 0 :(得分:5)
您已经自己说过,该文件以ANSI格式保存,但随后您将其作为UTF-8提供。这会导致浏览器将您的ANSI编码文件视为UTF-8。
charset参数和标题只是浏览器提示文件所在的编码,它实际上并没有对文件的“物理”字节做任何事情。要使这一切正常工作,您需要charset参数和头文件并将文件物理编码为UTF-8字节。
您需要在记事本++中将文件编码为UTF-8 ..将文件另存为UTF-8 without BOM
。
答案 1 :(得分:0)
HTML转义特殊字符。
nevekdata.js
var names = ["Aba", "Abád", "Abbás", "Abdiás", "Abdon", "Abdullah", "Ábel", "Abelárd"];
function writeOutNames() {
outputnames.innerHTML = names.toString();
}