Schauen Sie sich zuerst den reproduzierten Code an
1, gb2312.html Die Datei ist als GB2312 codiert
Die Codekopie lautet wie folgt:
<! DocType html>
<html>
<kopf>
<title> </title>
<meta charset = "gb2312"/>
<Styles>
P {
Farbe: Rot;
}
</style>
</head>
<body>
<button onclick = "loadjs ('utf8.js', 'utf-8')"> test </button>
<Script>
Funktionslastjs (src, charSet) {
var script = document.createelement ('script');
script.src = src;
script.CharSet = charSet;
var head = document.getElementsByTagName ('head') [0];
head.Appendchild (script);
}
</script>
</body>
</html>
2. utf8.js Die Dateikodierung ist UTF-8
Die Codekopie lautet wie folgt:
var p = document.createelement ('p');
P.innerhtml = 'IE Cache verursacht verstümmelten Code';
document.body.appendchild (p);
Die LoadJS -Funktion erstellt dynamisch ein Skript, legt SRC fest und fügt es nach CharSet zum Kopf hinzu. Hier führt jeder Klick auf die Schaltfläche Utf8.js in die Seite ein. Der Code in Utf.js erstellt ein P -Element, um ein Textstück festzulegen und es dann zum Körper hinzuzufügen.
Wenn Sie zum ersten Mal auf die Schaltfläche klicken, wird der Text normal angezeigt.
Nach dem zweiten Mal war die Textcodierung falsch.
Wie gezeigt
Wenn das Skript -Tag kein dynamisch erstelltes Skript -Tag ist und direkt auf der HTML -Seite geschrieben ist, gibt es kein Problem.
Die Codekopie lautet wie folgt:
<script type = "text/javaScript" src = "utf8.js" charset = "utf-8"> </script>
Wenn Sie document.write zum Laden von JS -Ressourcen verwenden, erfolgt der Fehler nicht.
Die Codekopie lautet wie folgt:
<Script>
Funktion loadByWrite (URL, charSet) {
var str = '<script type = "text/javaScript"' + 'src = "' + url + '" charset = "' + charset + '"> <' + '/script>';
document.write (str);
}
</script>
<Script>
LoadByWrite ('utf8.js', 'utf-8')
</script>
Die Lösung besteht darin, die Zuordnungsreihenfolge der SRC- und Charset -Attribute zu ersetzen.
Die Codekopie lautet wie folgt:
script.CharSet = charSet;
script.src = src;
Das heißt, zuerst dem Zeichensatz einen Wert zuweisen.