September 5, 2023

Почему русские буквы в ссылке (URL) отображаются в закодированном виде?

Когда вы вставляете ссылку в браузере, где присутствуют русские буквы, то можете заметить, что буквы и другие специальные символы отображаются как набор процентов и букв, например, %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.


Почему так происходит и как это влияет на передачу данных через Интернет?
Все дело в безопасности передачи данных

Кодирование ссылки (URL) нужно, чтобы безопасно передавать данные через HTTP и другие протоколы. Оно позволяет преобразовывать специальные символы в их кодированные представления.

Это делается для того, чтобы не возникало конфликтов синтаксиса и неправильной интерпретации символов браузером или сервером, а также предотвращает неправильную работу веб-приложений.

К сожалению, у HTTP протокола, который основан на ASCII, есть ограничения по обработке символов, поэтому необходимо использовать URL-кодирование для преобразования символов в форму, которую можно безопасно вставить в URL.


Как преобразуются символы?

В случае русских букв, а также символов из других алфавитов, которые отличаются от латиницы, они представлены в Unicode-стандарте, который охватывает символы из множества различных письменностей.

Как это выглядит на деле?

Предположим, у нас есть слово "привет" на русском языке, и мы хотим включить его в URL. Это слово будет преобразовано в следующую строку:

привет -> %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82

Каждая буква здесь представлена, как процент за которым следует два символа. Эти два символа - это шестнадцатеричное значение кода Unicode для каждой буквы. Таким образом, "привет" становится %D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82.

Как все происходит технически?

Вы вбиваете ссылку в браузере.

Происходит кодирование (encode) текста в unicode.

Когда URL-адрес с закодированными символами приходит в запросе на сервер, он автоматически декодируется (decode), чтобы восстановить исходные символы и после этого уже обрабатывает правильно данные, которые пришли через HTTP.