ดูรหัสที่ทำซ้ำก่อน
1, GB2312.html ไฟล์ถูกเข้ารหัสเป็น GB2312
การคัดลอกรหัสมีดังนี้:
<! doctype html>
<html>
<head>
<title> </title>
<meta charset = "GB2312"/>
<style>
P {
สี: สีแดง;
-
</style>
</head>
<body>
<ปุ่ม onclick = "loadjs ('utf8.js', 'UTF-8')"> ทดสอบ </ button>
<script>
ฟังก์ชั่น loadjs (src, charset) {
var script = document.createElement ('script');
script.src = src;
script.charset = charset;
var head = document.getElementsByTagname ('head') [0];
head.appendchild (สคริปต์);
-
</script>
</body>
</html>
2. utf8.js การเข้ารหัสไฟล์คือ UTF-8
การคัดลอกรหัสมีดังนี้:
var p = document.createElement ('P');
P.InnerHtml = 'CACHE 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 ข้อผิดพลาดจะไม่เกิดขึ้น
การคัดลอกรหัสมีดังนี้:
<script>
ฟังก์ชั่น loadbywrite (url, charset) {
var str = '<script type = "text/javascript"' + 'src = "' + url + '" charset = "' + charset + '"> <' + '/สคริปต์>';
document.write (str);
-
</script>
<script>
loadbyWrite ('utf8.js', 'UTF-8')
</script>
วิธีแก้ปัญหาคือการแทนที่ลำดับการกำหนดของแอตทริบิวต์ SRC และ charset
การคัดลอกรหัสมีดังนี้:
script.charset = charset;
script.src = src;
นั่นคือกำหนดค่าให้กับ Charset ก่อน