完美解決JS中漢字顯示亂碼問題(已解決)
2024-09-06 12:43:59
供稿:網友
如題,剛才看了幾篇大家的討論,忽然也想起要將自己最近研究的問題貼出來,凡是和JS中亂碼相關的問題都發到這里把,大家一起研究。:)
場景一:write寫出來的內容是utf-8格式的,如果保存的write數據中有不是utf-8編碼的中文,對write嵌套倆次以上就會有亂碼。由于手頭沒有現成的文件,剛才臨時制作了一個,這是1.htm頁面的代碼:
代碼如下:<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript" src="1.js"></script>
</head>
<body onload=myjs(1)>
</body>
</html>
這是引用的1.js文件代碼,倆個文件均用簡體中文保存而不是utf-8
代碼如下://這是JS遞歸自寫過程中漢字亂碼的演示程序
//不光是中文內容不行,就連注釋如果是中文有時候也不行
//感覺JS一碰上中文就變得很不穩定=_='
//Dec. 29th 2005 created by shouhaimu(QQ:30836570)
function myjs(i)
{
var t="<html>/n";
t+="<head>/n";
t+="<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>/n";
t+="<script language='JavaScript' src='1.js'></script>/n";
t+="</head>/n";
t+="<body>/n";
t+="<input type=button onclick=myjs("+(i+1)+" value='這是演示程序,已經運行了"+i+"次!'>/n";
//上面這行如果改成下面這句就可以正常顯示,看來確實是JS對漢字的支持不夠好:
//t+="<input type=button onclick=myjs("+(i+1)+" value='This is my code,it has run "+i+" times!'>/n";
t+="</body>/n";
t+="</html>/n";
document.open();
document.write(t);
document.close();
} 運行第2次以上就會有亂碼。
場景二:通過XMLHTTP獲取文件后再輸出時,如果該文件包含中文信息并按gb編碼,顯示時中文信息會是亂碼。
js代碼如下:(注釋是發貼子時候加的,如果怕干擾可以去掉)
代碼如下:<SCRIPT language="JavaScript" type="text/JavaScript">
self.onerror=null;
var Http = new ActiveXObject("Microsoft.XMLHTTP";
Http.open("GET",URL,false); //URL是您需要獲取的頁面的網址
Http.send();
document.write(Http.responseText);