11

在 HTML 中,脚本元素具有可选的 charset 属性。

它的目的是什么?

什么时候有用?

4

3 回答 3

7

如果您的 javascript 文件使用与页面使用的编码不同的编码进行编码,您可以使用该charset属性告诉浏览器如何解释它。

例如,如果页面使用的是Latin1,但 JS 文件是使用UTF-8.

于 2012-04-21T09:35:43.210 回答
5

charset参数的目的是在 HTTP 协议级别未指定编码的情况下指定外部脚本的编码。它并不是要覆盖 HTTP 标头中的编码信息,它也不会这样做。

当作者无法控制 HTTP 标头并且标头未指定字符编码时,这很有用。它对于离线文件也很有用,例如在直接访问的网页的本地副本中,而不是通过 HTTP 服务器,因此不存在 HTTP 标头。

在实践中,它不是很有用。如果需要在 JavaScript 文件中使用非 Ascii 字符,可以使用 UTF-8 编码。如果您使用带有前导 BOM 的 UTF-8,则 BOM 充当一个有用的指示器,让浏览器推断编码。但额外使用也无妨charset=utf-8

于 2012-04-21T16:19:56.163 回答
3

每个 JavaScript 文件都是页面中的一个单独元素,毕竟您甚至可以从某个远程作者的服务器加载 JS,否则它们与您的页面完全没有关系。与任何其他外部元素一样,如果远程服务器由于某种原因或只是为了确定返回错误的字符集,您可以手动指定“字符集”。

此外,如果您自己对此 JS 文件具有写入权限,您可能希望将所有非 ASCII 替换为 Unicode 位置转义 - 这将保证符号将始终被正确解释,无论标头中指定什么编码。一些 JS 压缩器,例如 Google Closure Compiler,可以自动为您完成。

于 2012-04-21T10:11:00.900 回答