如何在javascript文件中存储包含字母如öő字符串的数组?

时间:2012-12-11 16:58:53

标签: javascript encoding utf-8 ansi

我在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>

2 个答案:

答案 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&#225;d", "Abb&#225;s", "Abdi&#225;s", "Abdon", "Abdullah", "&#193;bel", "Abel&#225;rd"];
function writeOutNames() {
    outputnames.innerHTML = names.toString();
}