回答
如果您的javascript文件使用與頁面不同的編碼進行編碼,您可以使用charset
屬性告訴瀏覽器如何解釋它。
例如,如果頁面使用的是Latin1
,但JS文件是使用UTF-8
創建的。
每個JavaScript文件都是一個獨立於頁面的元素,畢竟你甚至可以從一些遠程作者的服務器加載JS,否則這些服務器與你的頁面根本沒有任何關係。就像其他任何外部元素一樣,如果遠程服務器出於某種原因返回錯誤的字符集,或者只是爲了確定,您可以手動指定「字符集」。另外,如果你自己有寫入這個JS文件的權限,你可能想用Unicode位置轉義替換所有的非ASCII碼 - 這將保證符號總是能被正確解釋,不管在頭文件中指定了什麼編碼。一些JS縮小器,比如Google Closure Compiler,可以自動爲你做。
那麼哪個優先? '腳本charset'或包含的js文件的標題字符集? – Pacerier 2014-10-06 12:17:08
charset
參數的用途是指定在HTTP協議級別未指定編碼的情況下外部腳本的編碼。它是而不是,意思是覆蓋HTTP標頭中的編碼信息,而不是這樣做。
當作者無法控制HTTP標頭並且標頭未指定字符編碼時,這非常有用。它對離線文件也很有用,例如直接訪問網頁的本地副本,而不是通過HTTP服務器,因此不存在HTTP頭。
實際上,它不是很有用。如果您需要在JavaScript文件中使用非Ascii字符,則可以使用UTF-8編碼。如果您使用具有領先BOM的UTF-8,則BOM可作爲有用的指標,讓瀏覽器推斷編碼。但它並沒有傷害額外使用charset=utf-8
。
你確定包含的JS文件的頭文件中指定的字符集的優先級高於主HTML頁面中指定的顯式字符集的優先級嗎?這是在真實的瀏覽器**在野外**測試的嗎? – Pacerier 2014-10-06 12:26:04
是的,在Firefox,Chrome,IE(Win 7)中測試過。測試頁面:http://www.cs.tut.fi/~jkorpela/test/js/demo.html – 2014-10-06 12:53:05
- 1. html name屬性的用途是什麼?
- 2. HTML5中「object」元素的新「form」屬性的用途是什麼?
- 3. 腳本標記的charset屬性的默認值是什麼?
- 4. 如果默認爲text/javascript,腳本元素的HTML「nomodule」屬性的用途是什麼?
- 5. C#中屬性的用途是什麼?
- 6. shell腳本中`$ [``的用途是什麼?
- 7. HTML中for屬性的用途是什麼?
- 8. 複選框輸入元素中`name`屬性的用途是什麼?
- 9. html輸入標記值屬性的用途是什麼?
- 10. 什麼是「?」在html腳本標籤的src屬性中?
- 11. NAnt腳本中屬性和屬性的用途
- 12. OpenLayer特性中屬性「人口」的用途是什麼?
- 13. 腳本標記的「for」和「event」屬性是什麼(Javascript,HTML)
- 14. 什麼是dsCorePropagation屬性,爲什麼我的腳本使用它?
- 15. 「for」屬性的HTML5有什麼用途?
- 16. C#Azure庫中的「DoesServiceRequest」裝飾屬性的用途是什麼?
- 17. MSDN FileSystemWatcher類示例中的PermissionSet屬性的用途是什麼?
- 18. <ext:JsonReader>中的ReaderID屬性的用途是什麼?
- 19. Google Maps API V3中的ExtendedData元素的用途是什麼?
- 20. ant-contrib的trycatch中「finally」元素的用途是什麼?
- 21. MySQL中整數括號中屬性的用途是什麼?
- 22. HTML5異步屬性對腳本元素的好處究竟是什麼?
- 23. 「site」元素屬性 - 它是什麼?
- 24. HTML中「機器人」元標記的用途是什麼?
- 25. package.json中「private」屬性的用途是什麼?
- 26. Google Plus鏈接中asrc屬性的用途是什麼?
- 27. File對象中webkitRelativePath屬性的用途是什麼?
- 28. C#中屬性GeneratedCodeAttribute的用途是什麼?
- 29. JSF commandbutton中標籤屬性的用途是什麼?
- 30. 輸入元素中textContent的用途是什麼?
儘管在我看來,最好是將編碼放在返回腳本的響應頭部。 – GolezTrol 2012-04-21 09:53:05
@GolezTrol - 它會更好,但並不是所有的網頁作者都擁有對標題的控制權。 – Oded 2012-04-21 09:57:56
如果頁面正在使用其他編碼(在我的情況下爲euc-kr)並且JS使用UTF8,則通過調用document.write()或設置某個元素的innerHTML編寫的某些文本將在編碼中正確編碼(euc -kr)不是UTF8? – 2012-04-21 10:37:36