数据 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 中 以确保它们在浏览器中可靠地解释。
- Arjun Chaudhary 对 Is there a drastic difference between UTF-8 and UTF-16 的回答。
是否有数据 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 中 以确保它们在浏览器中可靠地解释。
- Arjun Chaudhary 对 Is there a drastic difference between UTF-8 and UTF-16 的回答。