當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
同一页面引入多个JS文件的编码问题
生活随笔
收集整理的這篇文章主要介紹了
同一页面引入多个JS文件的编码问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原來只是覺得IE解析HTML文件的時候,需要知道其傳輸編碼,才能正確處理,而從來沒有在意過JavaScript文件的編碼問題。結(jié)果今天發(fā)現(xiàn)同一頁面中的多個JavaScript文件如果保存編碼不同,也會有出錯的問題。這個一般怎么會遇到呢?
????原來寫的js文件,從來沒有關(guān)心過他們的編碼問題。可是后來不知怎么的,發(fā)現(xiàn)一些單獨都好使得文件,被同時引用到一個頁面中時,就錯誤不斷,根本不能執(zhí)行。Debug半天,原來是文件編碼問題搞得鬼。
??? 一般我們在中文OS中保存文本文件,默認(rèn)都是一GB2312編碼保存的,比如VS.NET 2003,2005都是這樣。可是當(dāng)我們在腳本代碼中寫有"?"這些符號后,保存文件會提示讓你保存為Unicode格式。如果你不加理會,仍然保存為GB2312,那么下次打開這個文件你會發(fā)現(xiàn)"?"變成"?"@_@。這樣的字符還有一些,比如在Windows中的高位ASCII字符,它們的Unicode定義就是一些比較怪異的字符,如果用GB2312強行存這些字符,打開后會被兩兩合并為漢字或成為亂碼。
??? 回到我們腳本文件編碼的問題上來,如果我們在同一個頁面中引用多個JavaScript文件,而這些文件的保存編碼又不同(有GB2312有又Unicode),就可能出錯。當(dāng)然不是總都出,這也是最要命的。由于對于7bit ASCII碼,不管什么編碼都是通用的,也不會有解碼問題,可是如果文件里包含了漢字,就有可能出錯了。
????比如,GB2312保存的js文件: var?str?=?'這是一個GB2312編碼文件。';
var?description?=?'this?file?saved?as?GB2312?encoding.';????可以在選擇編碼為GB2312的IE中正確的被引用。
??? Unicode編碼保存的js文件: var?strW?=?'這是一個Unicode編碼文件。';
var?descriptionW?=?'this?file?saved?as?Unicode?encoding.';????可以在選擇編碼為Unicode的IE中正確的被引用。
??? 而這兩個文件在下列引用中,不管怎么選擇IE編碼也是不能正確執(zhí)行結(jié)果:( <html>
<head>
????<title>Test?Encode</title>
????<script?src="Unicode.js"?language="javascript"></script>
????<script?src="GB2312.js"??language="javascript"></script>
</head>
<body>
<script?language="javascript">
????alert(strW?+?'\r\n'?+?descriptionW);
????alert(str?+?'\r\n'?+?description);
</script>
</body>
</html>
????不過如果js中只有低位ASCII字符,不同編碼的文件引用到一個頁面不會有問題。
??? 測試文件下載
????原來寫的js文件,從來沒有關(guān)心過他們的編碼問題。可是后來不知怎么的,發(fā)現(xiàn)一些單獨都好使得文件,被同時引用到一個頁面中時,就錯誤不斷,根本不能執(zhí)行。Debug半天,原來是文件編碼問題搞得鬼。
??? 一般我們在中文OS中保存文本文件,默認(rèn)都是一GB2312編碼保存的,比如VS.NET 2003,2005都是這樣。可是當(dāng)我們在腳本代碼中寫有"?"這些符號后,保存文件會提示讓你保存為Unicode格式。如果你不加理會,仍然保存為GB2312,那么下次打開這個文件你會發(fā)現(xiàn)"?"變成"?"@_@。這樣的字符還有一些,比如在Windows中的高位ASCII字符,它們的Unicode定義就是一些比較怪異的字符,如果用GB2312強行存這些字符,打開后會被兩兩合并為漢字或成為亂碼。
??? 回到我們腳本文件編碼的問題上來,如果我們在同一個頁面中引用多個JavaScript文件,而這些文件的保存編碼又不同(有GB2312有又Unicode),就可能出錯。當(dāng)然不是總都出,這也是最要命的。由于對于7bit ASCII碼,不管什么編碼都是通用的,也不會有解碼問題,可是如果文件里包含了漢字,就有可能出錯了。
????比如,GB2312保存的js文件: var?str?=?'這是一個GB2312編碼文件。';
var?description?=?'this?file?saved?as?GB2312?encoding.';????可以在選擇編碼為GB2312的IE中正確的被引用。
??? Unicode編碼保存的js文件: var?strW?=?'這是一個Unicode編碼文件。';
var?descriptionW?=?'this?file?saved?as?Unicode?encoding.';????可以在選擇編碼為Unicode的IE中正確的被引用。
??? 而這兩個文件在下列引用中,不管怎么選擇IE編碼也是不能正確執(zhí)行結(jié)果:( <html>
<head>
????<title>Test?Encode</title>
????<script?src="Unicode.js"?language="javascript"></script>
????<script?src="GB2312.js"??language="javascript"></script>
</head>
<body>
<script?language="javascript">
????alert(strW?+?'\r\n'?+?descriptionW);
????alert(str?+?'\r\n'?+?description);
</script>
</body>
</html>
????不過如果js中只有低位ASCII字符,不同編碼的文件引用到一個頁面不會有問題。
??? 測試文件下載
總結(jié)
以上是生活随笔為你收集整理的同一页面引入多个JS文件的编码问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新增两款Skin(clover与Vale
- 下一篇: 孕妇做梦梦到毛毛虫是什么意思