回答
如果您的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. 脚本标记的charset属性的默认值是什么?
- 3. 如果默认为text/javascript,脚本元素的HTML“nomodule”属性的用途是什么?
- 4. C#中属性的用途是什么?
- 5. shell脚本中`$ [``的用途是什么?
- 6. 复选框输入元素中`name`属性的用途是什么?
- 7. 什么是“?”在html脚本标签的src属性中?
- 8. NAnt脚本中属性和属性的用途
- 9. 脚本标记的“for”和“event”属性是什么(Javascript,HTML)
- 10. 什么是dsCorePropagation属性,为什么我的脚本使用它?
- 11. “for”属性的HTML5有什么用途?
- 12. MSDN FileSystemWatcher类示例中的PermissionSet属性的用途是什么?
- 13. C#Azure库中的“DoesServiceRequest”装饰属性的用途是什么?
- 14. “site”元素属性 - 它是什么?
- 15. HTML中“机器人”元标记的用途是什么?
- 16. 命名元素时,XAML中x:前缀的用途是什么?
- 17. package.json中“private”属性的用途是什么?
- 18. JSF commandbutton中标签属性的用途是什么?
- 19. C#中属性GeneratedCodeAttribute的用途是什么?
- 20. 什么是html中的jz元素?
- 21. 这个查询组件在HTML脚本标签中的用途是什么?
- 22. 为什么HTML元素总是不遵从CSS高度属性?
- 23. 什么是HTML中的全局属性
- 24. 什么是HTML中的枚举属性?
- 25. sh脚本行中“ - ”的用途是什么:ext =“$(echo $ ext | sed's /\./\\./' - )”
- 26. &在shell脚本中的确切用途是什么?
- 27. 使用table元素的rules属性的HTML 5替代方法是什么?
- 28. 什么是依赖属性?它有什么用途?
- 29. XSD中元素的ref属性是做什么的?
- 30. HTML5中源元素的type属性的语法是什么?
尽管在我看来,最好是将编码放在返回脚本的响应头部。 – 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