Экранирование специальных символов - это процесс преобразования специальных символов (например, кавычек, пробелов, знаков препинания) в их соответствующие эквиваленты для передачи данных через различные протоколы и форматы.
Процентное кодирование или кодирование URI-адресов представляет собой метод кодирования произвольных данных с использованием ограниченных символов US-ASCII, разрешенных в URI.
Синтаксис URI содержит зарезервированные символы (двух типов) и незарезервированные символы.
Зарезервированные символы
gen-delims ":", "/", "?", "#", "[", "]", "@"
- символы, разделяющие URI на крупные компоненты.
sub-delims "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "="
- символы, разделяющие крупный компонент на более мелкие составляющие.
Незарезервированные символы
В общем случае незарезервированные символы это ALPHA, DIGIT, "-", ".", "_", "~"
, где ALPHA
- это буквы, а DIGIT
- десятичные цифры.
Если символ из набора зарезервированных символов используется в другом контексте, то он должен быть закодирован в процентах. Процентное кодирование зарезервированного символа представляет собой замену/преобразование символа в соответствующее ему значение.
Например, зарезервированный символ "/"
может быть заменен следующими символами - %2F
.
https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https://wwww.partner.ru/code&scope=openid&state=abcdef
https://id.alfabank.ru/oidc/authorize?response_type=code&client_id=0cee0683-85ae-49f2-a63d-29f97aad1911&redirect_uri=https%3A%2F%2Fwwww.partner.ru%2Fcode&scope=openid&state=abcdef
Таблица кодирования символов
Символ | ANSI |
---|---|
~ | %7E |
` | 60% |
' | 27% |
" | 22% |
@ | 40% |
? | %3F |
! | 21% |
# | 23% |
№ | %B9 |
$ | 24% |
% | 25% |
^ | %5E |
& | 26% |
+ | %2B |
* | %2A |
: | %3A |
, | %2C |
( | 28% |
) | 29% |
{ | %7B |
} | %7D |
[ | %5B |
] | %5D |
< | %3C |
> | %3E |
/ | %2F |
%5C | |
А | %C0 |
а | %E0 |
Б | %C1 |
б | %E1 |
В | %C2 |
В | %E2 |
Г | %C3 |
г | %E3 |
Д | %C4 |
д | %E4 |
Е | %C5 |
е | %E5 |
Ё | %A8 |
ё | %B8 |
Ж | %C6 |
ж | %E6 |
З | %C7 |
з | %E7 |
И | %C8 |
и | %E8 |
Й | %C9 |
й | %E9 |
К | %CA |
к | %EA |
Л | %CB |
л | %EB |
М | %CC |
м | %EC |
Н | %CD |
н | %ED |
О | %CE |
о | %EE |
П | %CF |
п | %EF |
Р | %D0 |
р | %F0 |
С | %D1 |
с | %F1 |
Т | %D2 |
т | %F2 |
У | %D3 |
у | %F3 |
Ф | %D4 |
ф | %F4 |
Х | %D5 |
х | %F5 |
Ц | %D6 |
ц | %F6 |
Ч | %D7 |
ч | %F7 |
Ш | %D8 |
ш | %F8 |
Щ | %D9 |
щ | %F9 |
Ъ | %DA |
ъ | %FA |
Ы | %DB |
ы | %FB |
Ь | %DC |
ь | %FC |
Э | %DD |
э | %FD |
Ю | %DE |
ю | %FE |
Я | %DF |
я | %FF |