数据 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 ,没有指定字符集
的数据 URI 默认为 US-ASCII
。因为every Base64-encoded URI uses only ASCII characters 。此外,“所有 US-ASCII 字符串都变为有效的 UTF-8”,这意味着“在许多情况下具有良好的向后兼容性”。1
尽管如此,UTF-8 的实现在 2019 年仍然参差不齐。正因为如此,并且因为显式调用字符集
到已经对用户不友好的数据 URI 的成本很小,所以这可能不是一个坏事建议在源映射 URI 中包含 charset=utf-8
,以便在浏览器中可靠地解释它们。
- Arjun Chaudhary 对 Is there a drastic difference between UTF-8 and UTF-16 的回答.
关于character-encoding - 数据 URI 默认字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357534/