引用外部js亂碼
在web開發中我們一般都會不可避免的使用js。我們可以將js代碼直接放在頁面中即通過內部使用js。但是為了給頁面良好的"瘦身"我們一般都會將js代碼放在外部,然后通過src引用。這個時候我們就需要注意一個問題:編碼問題。如果web頁面也js采用不同編碼,這個時候就會出現亂碼。(內部使用js不需要注意編碼問題,因為他們采用的是同一種編碼)
對於大多數的web頁面,我們一般都是使用如下兩種編碼:UTF-8、GB2312。所以我們只需要統一頁面和js編碼就可以解決亂碼問題:
對於GBK頁面引用編碼為UTF-8編碼的JavaScript文件如果出現亂碼問題,可以使用下面的代碼來解決
<script type=”text/javascript” src=”test.js” charset=”utf-8″></script>
同樣在UTF-8頁面中引入編碼為GBK的JavaScript文件亂碼問題了,可以使用如下方式:
<script type=”text/javascript” src=”test.js” charset=”gb2312″></script>
此方法是對於在js文件中出現漢字中文,以及其他容易造成在GBK與UTF-8編碼錯誤字符的時候使用,
注:Web頁面和js文件最好是使用同一種編碼,對於純英文的就不需要了,如果編碼已經統一,引入的js文件中文依然亂碼,則加入charset=”″聲明就好。
javascript中的3個編碼函數
escape/unescape
除了ASCII 字母、數字和特定的符號外,對傳進來的字符串全部進行轉義編碼;
因此如果想對URL編碼,最好不要使用此方法;
escape()適合對url的參數進行編碼。
encodeURI/decodeURI
用於編碼整個URL,因為URL中的合法字符都不會被編碼轉換;
進行url跳轉時可以整體使用encodeURI。
例如:Location.href=encodeURI("http://www.XX.com/Product/ProductShow.aspx?pid=468&SecondClass=35");
encodeURIComponent/decodeURIComponents
對url的參數編碼,特別在參數也是一個url的情況,如果不編碼會影響整個url跳轉。
例如:document.write('<a href="http://passport.baidu.com/?logout&aid=7&
u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');
在向后端傳值時,參數存在特殊字符時,我們一般使用這種編碼方法