재생 된 코드를 먼저보십시오
1, gb2312.html 파일은 GB2312로 인코딩됩니다
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<제목> </title>
<meta charset = "gb2312"/>
<스타일>
p {
색상 : 빨간색;
}
</스타일>
</head>
<body>
<버튼 onclick = "loadjs ( 'utf8.js', 'utf-8')"> 테스트 </button>
<cript>
함수 loadjs (src, charset) {
var script = document.createElement ( 'script');
script.src = src;
script.charset = charset;
var head = document.getElementsByTagName ( 'head') [0];
Head.appendChild (스크립트);
}
</스크립트>
</body>
</html>
2. utf8.js 파일 인코딩은 UTF-8입니다
코드 사본은 다음과 같습니다.
var p = document.createelement ( 'p');
p.innerhtml = '즉, 캐시는 garrled 코드를 유발합니다';
document.body.appendchild (p);
LoadJS 함수는 스크립트를 동적으로 생성하고 SRC를 설정하여 숯 이후 헤드에 추가합니다. 여기서 버튼의 각 클릭은 페이지에 utf8.js를 소개합니다. utf.js의 코드는 P 요소를 생성하여 텍스트를 설정 한 다음 본문에 추가합니다.
버튼을 처음 클릭하면 텍스트가 정상적으로 표시됩니다.
두 번째 후 텍스트 인코딩이 잘못되었습니다.
그림처럼
스크립트 태그가 동적으로 생성 된 스크립트 태그가 아니고 HTML 페이지에 직접 작성된 경우 문제가 없습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript"src = "utf8.js"charset = "utf-8"> </script>
JS Resources를로드하기 위해 Document.Write를 사용하면 버그가 발생하지 않습니다.
코드 사본은 다음과 같습니다.
<cript>
함수 loadBywrite (url, charset) {
var str = '<script type = "text/javaScript"' + 'src = "' + url + '"charset = "' + charset + '"> <' + '/script>';
document.write (str);
}
</스크립트>
<cript>
loadBywrite ( 'utf8.js', 'utf-8')
</스크립트>
해결책은 SRC 및 Charset 속성의 할당 순서를 대체하는 것입니다.
코드 사본은 다음과 같습니다.
script.charset = charset;
script.src = src;
즉, 먼저 숯불에 값을 할당하십시오.