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

JavaScriptファイルがANSIコーディングになっていることを検出しました(Notepad ++)。

質問:名前配列(または一般にこの特殊文字を含むコード)を格納して、ブラウザーに正しく出力できるようにするにはどうすればよいですか。

(実際、コーディングには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 に答える