В каком наборе символов следует предполагать наличие закодированных символов в URL-адресе?

StackOverflow https://stackoverflow.com/questions/140549

  •  02-07-2019
  •  | 
  •  

Вопрос

РФК 1738 определяет синтаксис URL-адресов и упоминает, что

URL -адреса написаны только с графическими печатными символами
Набор символов в кодировке US-ASCII.Octets 80-FF Hexadecimal не
Используется в US-ASCII, а Octets 00-1F и 7F Hexadecimal представляют
управляющие персонажи;Они должны быть закодированы.

Однако не говорится, какой кодовый набор представляют эти октеты.

RFC 2396 кажется, пытается улучшить ситуацию, но:

Однако для оригинальных последовательностей символов, которые содержат не ASCII, ситуация сложнее.Ожидается, что интернет -протоколы, которые передают последовательности октетов, предназначенные для представления последовательностей символов, будут обеспечить некоторый способ идентификации используемого Charset, если может быть более одного [RFC2277].Тем не менее, в настоящее время в общем синтаксисе URI нет никакого положения для выполнения этой идентификации.Индивидуальная схема URI может потребовать единого Charset, определить Charset по умолчанию или предоставить способ указать используемый Charset.

Ожидается, что систематическая обработка кодирования персонажа в URI будет разработана как будущая модификация этой спецификации.

Существует ли какой-либо однозначный способ, с помощью которого клиент может определить, в каком наборе символов интерпретировать закодированные октеты, или с помощью чего сервер может определить, с помощью чего клиент использовал кодировку?

Мне кажется, что большинство серверов по умолчанию используют UTF-8, но, похоже, это скорее выбор де-факто, чем указанный.

Это было полезно?

Решение

Согласно вашей цитате, URL-адреса имеют формат ASCII.Вот и все.

URI OTOH, допускают использование больших кодировок;обычно UTF-8, как вы сами сказали.

Следует помнить, что URL-адреса являются подмножеством URI.Поэтому реальный вопрос в том, что из этого вы пишете в браузере?

Я предполагаю, что вы можете написать URI, и браузер должен изо всех сил стараться преобразовать его в URL-адрес (именно это поддерживает HTTP/1.1, AFAICR).Для символов, отличных от ASCII, это означает шестнадцатеричные коды, обычно в кодировке UTF-8.

Другие советы

Я считаю, что спецификация, которую вы ищете, РФК 3987, который описывает IRI — интернационализированные идентификаторы ресурсов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top