脚本标记的charset属性的默认值是什么?

时间:2011-02-15 14:27:44

标签: html character-encoding

说我有这样的脚本: <script type="text/javascript" src="myScript.js">

我在网上看到一些消息来源声称如果省略charset属性,则默认为ISO-8859-1。我见过其他人声称它采用与包含脚本标记的HTML页面相同的编码。真相是什么?

我需要知道,因为我的JavaScript文件包含将插入HTML的文字字符串,其中包括非ASCII字符,如欧元符号(€)。我意识到添加一个charset属性或只是编码这些字符的HTML应该可以解决我的问题,但我仍然想了解默认行为。

编辑:为了澄清一点,我不仅需要知道标准的含义,还要了解浏览器的实际行为。此处描述的行为:http://joconner.com/2008/09/javascript-file-encoding/似乎表明浏览器总是假设ISO-8859-1。

4 个答案:

答案 0 :(得分:6)

w3c有一个浏览器确定字符编码的标准方法,你可以在这里阅读:http://www.w3.org/TR/html4/charset.html#spec-char-encoding

  

总而言之,符合要求的用户代理必须   请注意以下优先事项   确定文档的字符   编码(从最高优先级到   最低):

     
      
  1. “Content-Type”字段中的HTTP“charset”参数。
  2.   
  3. META声明,其中“http-equiv”设置为“Content-Type”,并为“charset”设置值。
  4.   
  5. 在指定外部资源的元素上设置的charset属性。
  6.         

    除此之外   优先级列表,用户代理可以   使用启发式和用户设置。对于   例如,许多用户代理使用   启发式来区分各种   用于日文文本的编码。   此外,用户代理通常具有   用户可定义的本地默认值   它们适用的字符编码   没有其他指标。

答案 1 :(得分:2)

根据w3schools.com,该值为ISO-8859-1,并且所有主流浏览器都支持此功能。

根据HTTP 1.1 specification

  

当发送方未提供显式字符集参数时,“text”类型的媒体子类型被定义为在通过HTTP接收时具有默认字符集值“ISO-8859-1”。除“ISO-8859-1”或其子集之外的字符集中的数据必须用适当的字符集值标记。有关兼容性问题,请参阅3.4.1部分。

因此,任何不符合此要求的内容在技术上都不符合HTTP 1.1规范。

答案 2 :(得分:1)

HTML5 4.11.1脚本元素

  

如果脚本元素具有charset属性,则让脚本块的此脚本元素的字符编码是从charset属性的值获取编码的结果。

     

否则,让脚本块的此脚本元素的后备字符编码与文档本身的编码相同。

引用链接到DOM document元素,该元素具有encoding属性。

TODO:找出如何根据标准确定该对象的编码。

答案 3 :(得分:0)

HTML编码字符串并将它们传递给javascript变量会导致问题,特别是如果你使用十六进制代码作为js我被告知更喜欢八进制。

如果您可以使用utf-8作为网页的字符集,那么js可以正常工作。我经常使用它,并且从未需要为包含的脚本文件定义字符集。