JS檔案中的中文在網頁上顯示為亂碼解決方案
JS編碼轉換,這句話本身就是一句具有二重義的話。通常理解為JS檔案裡能轉換編碼的代碼,但是,我所碰到的問題並不是這樣的,是要解決JS檔案本身的編碼問題,它是UTF-8編碼的還是ANSI編碼的?在百度、Google上一搜,大家都是說通過JAVA幕後處理來解決編碼問題,試問,這樣能解決JS檔案本身的編碼問題嗎?
之所以提出JS檔案本身編碼問題,是因為JS檔案的編碼不同,造成了中文顯示為亂碼。
通常,在Eclipse中建立一個JS檔案(含有中文),在Eclipse的編輯器中看到的中文都很正常,但是顯示在網頁上就是亂碼,而我的頁面全部都是採用UTF-8編碼進行編碼的,為此,我想到了,這可能是JS檔案本身編碼問題造成的。
在Eclipse中,JS檔案中的中文顯示正常
在網頁中,中文卻顯示為亂碼
我想到了這可能是由於JS檔案本身編碼問題所導致的,其實這是正確的。這裡要用到一個小工具,叫NotePad2,翻譯過來就是記事本第代,這個小工具很好用,綠色免安裝,完全可以取代windows系統內建的記事本軟體。它的是:http://download.csdn.net/source/1732849
用NotePad2開啟JS檔案,查看JS檔案的編碼,發現JS檔案的編碼是ANSI,ANSI編碼採用0x80~0xFF範圍內的2個位元組來表示1個字元。例如,漢字“中”在中文作業系統中,使用[0xD6,0xD0]這兩個位元組來儲存。但是,不同的國家和地區制定了不同的ANSI標準,使得不同ANSI編碼之間互不相容。大家都知道,在中國,瀏覽器的編碼要麼是GBK或GB2312編碼,要麼是UTF8編碼,當以ANSI編碼的中文發送到網頁上時,自然就顯示為亂碼了,所以這是問題的根本。
藉助NotePad2軟體,將JS檔案的編碼轉換成UTF-8編碼,因為UTF-8編碼是電腦通用編碼,能支援幾乎所有國家或地區的語言文字,而且瀏覽器本身就支援UTF-8編碼。
OK,再來看看在瀏覽器上的效果。顯而易見,中文顯示正常,亂碼問題解決。並非像網上所說的“使用JS中的encodeURIComponent或encodeURI方法”,既複雜又難懂,還要經過複雜的編程,實在是不可取。
經我的測試,無論是使用建立文字文件然後將副檔名改成.js,還是用其他軟體或工具建立的JS檔案,用NotePad2軟體開啟查看編碼,發現 JS檔案的編碼都是ANSI,因此我猜測,難道JS檔案的預設編碼是ANSI編碼?當然這個我並沒有去考證,在網上也沒有相關的資料可以證明JS檔案的預設編碼是ANSI編碼,僅個人猜測而已。
但是,至少,如果JS檔案中的中文在網頁上顯示為亂碼,不妨採用本文章中的方法來試一試,或許能解決使你很頭疼的問題。