character-encoding - 数据 URI 默认字符集

标签 character-encoding uri source-maps data-uri data-uri-scheme

数据 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,以便在浏览器中可靠地解释它们。

<小时/>
  1. Arjun Chaudhary 对 Is there a drastic difference between UTF-8 and UTF-16 的回答.

关于character-encoding - 数据 URI 默认字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357534/

相关文章:

html - 谁在复制/粘贴时进行转换?

用于解析干净 URL 并获取其不同组件的 Java 库/类

c# - 停止 C# Uri 构造函数对 url 进行编码(竖线)

haskell - 如何在编译器中实现源映射?

python - 将 utf-8 写入 Excel CSV

c# - 由于编码问题,在 iOS 上从 C# 调用 DLL 库时出现问题

php - 使用 CakePHP 的 UTF-8 MySQL 表中的 Windows 1252 数据

Android SAF,无法复制文件,未设置 FLAG_SUPPORTS_COPY

source-maps - `Invalid mapping` 尝试使用 babel require hook 和 polyfill 以及 React jsx transpile 时出错

javascript - 是否可以使用源映射通过 NativeScript 生成可用的堆栈跟踪(例如使用 Crashlytics)