【发布时间】:2016-07-29 19:20:12
【问题描述】:
假设我有一个这样的脚本:
<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。
【问题讨论】:
-
我希望默认行为取决于您的 server 而不是任何“封闭”内容中定义的字符集。不过我不确定这一点,所以我将其作为评论而不是答案发布。
-
IIRC,浏览器默认为“脚本出现的页面的编码,有时即使字符集另有说明”。虽然我没有权威来源,所以我很犹豫是否将其作为答案..
-
@Ben Poole:当您说它依赖于服务器时,您是指服务器发送的 HTTP 标头还是其他什么?我的意思是,最终是网络浏览器必须弄清楚如何阅读脚本,对吧?
-
HTTP 标头是;大多数服务器都有默认配置。