Почему русские буквы в ссылке (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.