数据 URI 默认字符集

Data URI default charset

是否有数据 URI 的默认字符集?我读了 the spec 但我没有看到。

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

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

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

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

根据RFC 2397 § 2, a data URI without a specified charset defaults to US-ASCII. Because every Base64-encoded URI uses only ASCII characters。此外,“所有 US‑ASCII 字符串都变为有效的 UTF‑8”,这意味着“在许多情况下具有良好的向后兼容性”。1

尽管如此,UTF-8 的实施在 2019 年仍然参差不齐。正因为如此 – 并且因为显式调用 charset 到 already-user-unfriendly 数据 URI 的成本很小 – 这可能不是一个坏主意charset=utf-8 包含在您的源地图 URI 中 以确保它们在浏览器中可靠地解释。


  1. Arjun Chaudhary 对 Is there a drastic difference between UTF-8 and UTF-16 的回答。