5

数据 URI 是否有默认字符集?我阅读了规范,但我没有看到。

例如,如果我有一个源映射的数据 URI,我希望它可以跨浏览器可靠地解释,那么省略字符集是否可以?

//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJza...

对比

//@ sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJza...

我在这个 GitHub 问题中看到人们在源映射文件中使用中文字符时遇到了问题,而没有明确的charset=utf-8. 所以如果有一个默认值(或者,至少,如果我们可以期望浏览器选择一个),它似乎不是utf-8那个......

4

1 回答 1

1

根据RFC 2397 § 2没有指定的数据 URIcharset默认为US-ASCII. 因为每个 Base64 编码的 URI 只使用 ASCII 字符。此外,“所有 US-ASCII 字符串都变为有效的 UTF-8”,这意味着“在许多情况下都具有良好的向后兼容性”。1

尽管如此,UTF-8 的实现在 2019 年仍然不平衡。正因为如此——并且因为显式调用charset已经对用户不友好的数据 URI 几乎没有成本——在源映射 URI中包含charset=utf-8以保持它们可以跨浏览器可靠地解释。


  1. Arjun Chaudhary 对UTF-8 和 UTF-16 之间是否存在巨大差异的回答。
于 2019-07-12T23:11:56.943 回答