Кодировка данных URI по умолчанию

Существует ли кодировка по умолчанию для URI данных? Я прочитал спецификацию, но не вижу ее.

Например, если у меня есть URI данных для исходной карты, который, как я ожидаю, будет надежно интерпретирован во всех браузерах, можно ли пропустить кодировку?

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

против

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

В этом выпуске GitHub я вижу, что у людей возникали проблемы с использованием китайских символов в файлах с исходным сопоставлением без явного charset=utf-8, Так что если есть значение по умолчанию (или, по крайней мере, если бы мы могли ожидать, что браузер выбрал один), это не похоже на utf-8 единственный...

0 ответов

Согласно RFC 2397 §2, URI данных без указанногоcharset по умолчанию US-ASCII. Потому что каждый URI в кодировке Base64 использует только символы ASCII. Более того, "все строки US‑ASCII становятся действительными UTF‑8", что означает "во многих случаях приличная обратная совместимость".1

Тем не менее, реализация UTF-8 в 2019 году остается неравномерной. Из-за этого - а также потому, что явный вызов charsetв URI данных, уже недружелюбных к пользователю - вероятно, неплохо было бы включитьcharset=utf-8в URI исходной карты, чтобы обеспечить их надежную интерпретацию в браузерах.


  1. Ответ Арджуна Чаудхари на вопрос: есть ли резкая разница между UTF-8 и UTF-16.
Другие вопросы по тегам