Сначала посмотрите на воспроизводимый код
1, GB2312.html Файл кодируется как GB2312
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<title> </title>
<meta charset = "gb2312"/>
<style>
p {
Цвет: красный;
}
</style>
</head>
<тело>
<button onclick = "loadjs ('utf8.js', 'utf-8')"> test </button>
<Скрипт>
function Loadjs (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 Кодирование файла-UTF-8
Кода -копия выглядит следующим образом:
var p = document.createElement ('p');
p.innerhtml = 'IE Cache вызывает искаженный код';
document.body.appendchild (p);
Функция LoadJS Динамически создает скрипт, устанавливает SRC и добавляет его в голову после Charset. Здесь каждый нажмите кнопку введет UTF8.js на странице. Код в utf.js создаст элемент P для установки текста, а затем добавит его в тело.
Когда вы нажимаете кнопку в первый раз, текст будет отображаться нормально.
После второго раз, кодирование текста было неверным.
Как показано
Если тег скрипта не является динамически созданным тегом скрипта и записывается непосредственно на HTML -странице, нет никаких проблем.
Кода -копия выглядит следующим образом:
<script type = "text/javascript" src = "utf8.js" charset = "utf-8"> </script>
Если вы используете Document.write для загрузки ресурсов JS, ошибка не произойдет.
Кода -копия выглядит следующим образом:
<Скрипт>
function LoadByWrite (url, charset) {
var str = '<script type = "text/javascript" +' src = "' + url +'" charset = "' + charset +'"> <' +'/script> ';
document.write (str);
}
</script>
<Скрипт>
LoadByWrite ('utf8.js', 'UTF-8')
</script>
Решение состоит в том, чтобы заменить порядок назначения атрибутов SRC и Charset.
Кода -копия выглядит следующим образом:
script.charset = charset;
script.src = src;
То есть присвоить значение charset в первую очередь.