3

我在一个 javascript 文件中有一个数组,其中包含带有特殊字母的匈牙利名字,例如:ö ő ó á í

var names = ["Aba", "Abád", "Abbás", "Abdiás", "Abdon", "Ábel", "Abelárd"];

(以上只是一个缩短的数组,整个长度大约是 3000 项长)

当我想在 HTML 文档中输出“名称”的内容时,我得到了非 ASCII 字符的模糊字母。

如果我直接在输出它的 UTF-8 编码 HTML 中定义数组,我会得到一个清晰的输出列表。就好像我在 JavaScript 文件中定义数组一样,我得到了一个模糊的内容。看画面:http ://screencast.com/t/YJ83K9Mgm

我检测到(Notepad++)JavaScript 文件采用 ANSI 编码。

问题:如何存储名称数组(或一般包含此特殊字母的代码),以便可以在浏览器中正确输出。

(其实我是用 MS Studio Express 2012 进行编码的。我找不到可以设置某些文件编码类型的地方。)

这是在 HTML 标题中定义的数组宽度的简化代码:

<!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>
4

2 回答 2

5

您自己已经说过,该文件以 ANSI 保存,但随后您将其作为 UTF-8 提供。这会导致浏览器将您的 ANSI 编码文件视为 UTF-8。

字符集参数和标头只是向浏览器提示文件的编码方式,它实际上对文件的“物理”字节没有任何作用。为了使这一切正常工作,您需要 charset 参数和标头并将您的文件物理编码为 UTF-8 字节。

您需要将文件编码为 UTF-8 .. 在 notepad++ 中,将文件另存为UTF-8 without BOM.

于 2012-12-11T17:20:35.687 回答
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();
}
于 2012-12-11T17:06:09.890 回答