Таблица кодирования символов в URL

15.10.2019

39546

В закладки

В URL некоторые символы должны кодироваться, в PHP для этого применяется функция urlencode(). По её алгоритму все символы, кроме латинских букв, -, _, . заменяются знаком процента (%), за которым идут два шестнадцатеричных числа (поэтому результат зависит от кодировки), пробелы заменяются на знак сложения (+).

Так же есть функция rawurlencode(), которая выполняет туже роль, но с минимальным различием – символ ~ остается без изменяя.

Таблица URL-кодирования:
Символ UTF-8 ANSI
~ %7E %7E
` 60% 60%
27% 27%
« 22%
22%
@ 40% 40%
? %3F %3F
! 21% 21%
# 23% 23%
%E2%84%96 %B9
$ 24% 24%
% 25% 25%
^ %5E %5E
& 26% 26%
+ %2B %2B
* %2A %2A
: %3A %3A
, %2C %2C
( 28% 28%
) 29% 29%
{ %7B %7B
} %7D %7D
[ %5B %5B
] %5D %5D
< %3C %3C
> %3E %3E
/ %2F %2F
%5C %5C
А %D0%90 %C0
а %D0%B0 %E0
Б %D0%91 %C1
б %D0%B1 %E1
В %D0%92 %C2
в %D0%B2 %E2
Г %D0%93 %C3
г %D0%B3 %E3
Д %D0%94 %C4
д %D0%B4 %E4
Е %D0%95 %C5
е %D0%B5 %E5
Ё %D0%81 %A8
ё %D1%91 %B8
Ж %D0%96 %C6
ж %D0%B6 %E6
З %D0%97 %C7
з %D0%B7 %E7
И %D0%98 %C8
и %D0%B8 %E8
Й %D0%99 %C9
й %D0%B9 %E9
К %D0%9A %CA
к %D0%BA %EA
Л %D0%9B %CB
л %D0%BB %EB
М %D0%9C %CC
м %D0%BC %EC
Н %D0%9D %CD
н %D0%BD %ED
О %D0%9E %CE
о %D0%BE %EE
П
%D0%9F %CF
п %D0%BF %EF
Р %D0%A0 %D0
р %D1%80 %F0
С %D0%A1 %D1
с %D1%81 %F1
Т %D0%A2 %D2
т %D1%82 %F2
У %D0%A3 %D3
у %D1%83 %F3
Ф %D0%A4 %D4
ф %D1%84 %F4
Х %D0%A5 %D5
х %D1%85 %F5
Ц %D0%A6 %D6
ц %D1%86 %F6
Ч %D0%A7 %D7
ч %D1%87 %F7
Ш %D0%A8 %D8
ш %D1%88 %F8
Щ %D0%A9 %D9
щ %D1%89 %F9
Ъ %D0%AA %DA
ъ %D1%8A %FA
Ы %D0%AB %DB
ы %D1%8B %FB
Ь %D0%AC %DC
ь %D1%8C %FC
Э %D0%AD %DD
э %D1%8D %FD
Ю %D0%AE %DE
ю %D1%8E %FE
Я %D0%AF %DF
я %D1%8F %FF

15. 10.2019, обновлено 18.10.2019

39546

#HTTP #PHP #URL #Домены

В закладки

Другие публикации

Таблица символов KOI8-R

KOI8-R (КОИ8-R) представляет собой восьмибитовую кодовую страницу для кодирования букв кириллических алфавитов, совместима с кодировкой ASCII.

HTML — кодировка URL — CoderLessons.com

Кодирование URL – это практика перевода непечатаемых символов или символов со специальным значением в URL-адреса в представление, которое является однозначным и общепринятым для веб-браузеров и серверов. Эти символы включают в себя –

  • Управляющие символы ASCII – непечатаемые символы, обычно используемые для управления выводом. Диапазон символов 00-1F шестнадцатеричный (0-31 десятичный) и 7F (127 десятичный). Полная таблица кодирования приведена ниже.

  • Не-ASCII управляющие символы – это символы за пределами набора символов ASCII из 128 символов.

    Этот диапазон является частью набора символов ISO-Latin и включает всю “верхнюю половину” набора ISO-Latin 80-FF hex (128-255 десятичных). Полная таблица кодирования приведена ниже.

  • Зарезервированные символы – это специальные символы, такие как знак доллара, амперсанд, плюс, общий, косая черта, двоеточие, точка с запятой, знак равенства, знак вопроса и символ «at». Все они могут иметь разные значения внутри URL, поэтому их необходимо кодировать. Полная таблица кодирования приведена ниже.

  • Небезопасные символы – это пробел, кавычки, меньше символа, больше символа, символ фунта, символ процента, левая фигурная скобка, правая фигурная скобка, труба, обратная косая черта, каретка, тильда, левая квадратная скобка, правая квадратная скобка, могильный акцент , Эти символы дают возможность быть неправильно понятыми в URL-адресах по разным причинам. Эти символы также всегда должны быть закодированы. Полная таблица кодирования приведена ниже.

Управляющие символы ASCII – непечатаемые символы, обычно используемые для управления выводом. Диапазон символов 00-1F шестнадцатеричный (0-31 десятичный) и 7F (127 десятичный). Полная таблица кодирования приведена ниже.

Не-ASCII управляющие символы

– это символы за пределами набора символов ASCII из 128 символов. Этот диапазон является частью набора символов ISO-Latin и включает всю “верхнюю половину” набора ISO-Latin 80-FF hex (128-255 десятичных). Полная таблица кодирования приведена ниже.

Зарезервированные символы – это специальные символы, такие как знак доллара, амперсанд, плюс, общий, косая черта, двоеточие, точка с запятой, знак равенства, знак вопроса и символ «at». Все они могут иметь разные значения внутри URL, поэтому их необходимо кодировать. Полная таблица кодирования приведена ниже.

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

Эти символы также всегда должны быть закодированы. Полная таблица кодирования приведена ниже.

Нотация кодирования заменяет нужный символ тремя символами: знаком процента и двумя шестнадцатеричными цифрами, которые соответствуют позиции символа в наборе символов ASCII.

пример

Одним из наиболее распространенных специальных символов является пробел. Вы не можете ввести пробел в URL напрямую. Позиция пробела в наборе символов составляет 20 шестнадцатеричных. Таким образом, вы можете использовать% 20 ​​вместо пробела при передаче вашего запроса на сервер.

http://www.example.com/new%20pricing.htm

Этот URL-адрес фактически извлекает документ с именем «new pricing.htm» с сайта www.example.com.

Кодировка управляющих символов ASCII

Это включает в себя кодирование для диапазонов символов 00-1F шестнадцатеричное (0-31 десятичное) и 7F (127 десятичное)

Десятичный Шестнадцатеричное значение символ Кодирование URL
0 00 % 00
1 01 % 01
2 02 % 02
3 03 % 03
4 04 % 04
5 05 % 05
6 06 % 06
7 07 % 07
8 08 возврат на одну позицию % 08
9 09 табуляция % 09
10 0a перевод строки % 0a
11 0b % 0b
12 % 0с
13 0d возврат каретки % 0D
14 0e % 0e
15 0f % 0f
16 10 % 10
17 11 % 11
18 12 % 12
19 13 % 13
20 14 % 14
21 15 % 15
22 16 % 16
23 17 % 17
24 18 % 18
25 19 % 19
26 1a % 1а
27 % 1b
28 1c % 1c
29 1d % 1d
30 1e % 1е
31 1f % 1f
127 % 7е

Кодировка управляющих символов не ASCII

Это включает в себя кодирование для всей “верхней половины” ISO-Latin набора 80-FF hex (128255 десятичное. )

Десятичный Шестнадцатеричное значение символ Кодирование URL
128 80 % 80
129 81 % 81
130 82 , % 82
131 83 ƒ % 83
132 84 « % 84
133 85 % 85
134 86 % 86
135 87 % 87
136 88 % 88
137 89 % 89
138 Š % 8а
139 < % 8b
140 О. Н % 8c
141 8d % 8d
142 Ž % 8e
143 % 8е
144 90 % 90
145 91 % 91
146 92 % 92
147 93 « % 93
148 94 » % 94
149 95 % 95
150 96 % 96
151 97 % 97
152 98 ~ % 98
153 99 % 99
154 š % 9a
155 9b > % 9b
156 9c œ % 9c
157 9d % 9d
158 9e ž % 9e
159 Ÿ % 9F
160 a0 % a0
161 a1 ¡ % a1
162 a2 ¢ % a2
163 a3 £ % a3
164 a4 ¤ % a4
165 a5 ¥ % a5
166 a6 | % a6
167 a7 § % a7
168 a8 ¨ % a8
169 a9 © % a9
170 аа ª % аа
171 аб « % аб
172 переменный ток ¬ % переменный ток
173 объявление %объявление
174 ае ® % ае
175 аф ¯ % аф
176 b0 ° % b0
177 b1 ± % b1
178 Би 2 ² %Би 2
179 b3 ³ % b3
180 b4 % b4
181 b5 μ % b5
182 b6 % b6
183 b7 · % b7
184 b8 ¸ % b8
185 b9 ¹ % b9
186 ба º % ба
187 бб » % бб
188 До нашей эры ¼ %До нашей эры
189 бод ½ % шд
190 быть ¾ %быть
191 Б. Ф. ¿ % Б.Ф.
192 c0 À % c0
193 c1 Á % c1
194 c2 Â % c2
195 c3 Ã % c3
196 c4 Ä % c4
197 c5 Å % c5
198 c6 Æ % v6
199 c7 БЗ % c7
200 с8 Э. % c8
201 с9 É % с9
202 Калифорния Ê % ча
203 центибар Ë % центибар
204 куб.см Я % куб.см
205 CD Я %CD
206 в. п. Я % в.п.
207 сравни Я % ср
208 d0 Ð % d0
209 d1 ЦТС % d1
210 d2 Ò % d2
211 d3 Ó % d3
212 d4 Ф % d4
213 d5 Õ % d5
214 d6 Ö % d 6
215 d7 × % d7
216 d8 Ø % d8
217 d9 Ù % d9
218 да Ú % да
219 децибел Û % дб
220 Округ Колумбия Ü %Округ Колумбия
221 дд Ý % дд
222 де Þ % от
223 Д. Ф. ß % Д.Ф.
224 e0 à % e0
225 e1 á % e1
226 e2 â % e2
227 e3 ã % e3
228 e4 ä % e4
229 e5 å % e5
230 e6 æ % e6
231 e7 ç % e7
232 e8 è % e8
233 e9 é % e9
234 еа ê % еа
235 Е.Б. ë % Е.Б.
236 ЕС я % ес
237 издание я % ред
238 й я % й
239 эф я % эф
240 f0 ð % f0
241 f1 ñ % f1
242 f2 ò % f2
243 f3 ó % f3
244 f4 ô % f4
245 f5 õ % f5
246 f6 ö % f6
247 f7 ÷ % f7
248 f8 ø % f8
249 f9 ù % f9
250 фа ú % метрономы
251 фб û % фб
252 Ь ü % Ь
253 FD ý % FD
254 Fe þ % Fe
255 Ф. Ф. ÿ % Ф.Ф.

Кодировка зарезервированных символов

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

Десятичный Шестнадцатеричное значение голец Кодирование URL
36 24 $ % 24
38 26 & % 26
43 2b + % 2b
44 , % 2c
47 2f / % 2f
58 3a : % 3a
59 3b ; % 3b
61 3d знак равно % 3d
63 3f ? % 3f
64 40 @ % 40

Кодировка небезопасных символов

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

Что такое кодирование URL и как оно работает?

Раджив Сингх4 минуты

Введение

URL-адрес (унифицированный указатель ресурсов) — это адрес ресурса во всемирной паутине. URL-адреса имеют четко определенную структуру, которая была сформулирована в RFC 1738 Тимом Бернерсом-Ли, изобретателем всемирной паутины.

Каждый URL-адрес подтверждает общий синтаксис , который выглядит следующим образом:

 схема:[//[пользователь:пароль@]хост[:порт]]путь[?запрос][#фрагмент] 

Некоторые части синтаксиса URL, например [пользователь:пароль@] , устарели и редко используются из соображений безопасности. Ниже приведен пример URL-адреса, который вы чаще всего видите в Интернете:

 https://www.google.com/search?q=hello+world#brs 

. Было внесено много улучшений в исходный RFC, определяющий синтаксис унифицированных указателей ресурсов (URL). Текущий документ RFC, определяющий синтаксис универсального URI, — RFC 3986. Этот пост содержит информацию из последнего документа RFC.

Кодировка URL-адреса (процентное кодирование)

URL-адрес состоит из ограниченного набора символов, принадлежащих к набору символов US-ASCII. Эти символы включают цифры (0-9), буквы (A-Z, a-z) и несколько специальных символов ( "-" , "." , "_" , "~" ).

Управляющие символы ASCII (например, backspace, вертикальная табуляция, горизонтальная табуляция, перевод строки и т. д.), небезопасные символы, такие как пробел , \ , < , > , { , } и т. д., а любые символы, не входящие в кодировку ASCII, нельзя размещать непосредственно в URL-адресах.

Кроме того, некоторые символы имеют особое значение в URL-адресах. Эти символы называются зарезервированными символами. Некоторые примеры зарезервированных символов: ? , / , # , : и т. д. Любые данные, передаваемые как часть URL, будь то строка запроса или сегмент пути, не должны содержать эти символы.

Итак, что мы делаем, когда нам нужно передать какие-либо данные в URL-адресе, который содержит эти запрещенные символы? Ну мы их кодируем!

Кодирование URL-адресов

преобразует зарезервированные, небезопасные и не-ASCII-символы в URL-адресах в формат, который повсеместно принимается и понимается всеми веб-браузерами и серверами. Сначала он преобразует символ в один или несколько байтов. Затем каждый байт представляется двумя шестнадцатеричными цифрами, которым предшествует знак процента ( % ) - (например, %xy ). Знак процента используется как escape-символ.

URL-кодирование также называется процентным кодированием, поскольку оно использует знак процента ( % ) в качестве escape-символа.

Пример кодировки URL

Пробел: Один из наиболее частых символов URL-кодировки, с которым вы, вероятно, столкнетесь, — это пробел . Значение ASCII символа пробел в десятичном виде равно 32 , что при преобразовании в шестнадцатеричный вид получается 20 . Теперь мы просто предваряем шестнадцатеричное представление знаком процента ( % ), что дает нам закодированное значение URL — %20 .

Справочник по кодировке символов ASCII

В следующей таблице приведены ссылки на символы ASCII в их соответствующей URL-кодированной форме.

Обратите внимание, что кодирование буквенно-цифровых символов ASCII не требуется. Например, вам не нужно кодировать символ от '0' до %30 , как показано в следующей таблице. Его можно передать как есть. Но кодировка по-прежнему действительна в соответствии с RFC. Все символы, которые безопасно передавать внутри URL-адресов, выделены в таблице зеленым цветом.

В следующей таблице используются правила, определенные в RFC 3986 для кодирования URL-адресов.

9
Decimal Character URL Encoding (UTF-8)
0 NUL(null character) %00
1 SOH(start of header ) %01
2 STX(начало текста) %02
3 ETX(конец текста) %03
4 EOT(end of transmission) %04
5 ENQ(enquiry) %05
6 ACK(acknowledge) % 06
7 BEL(bell (ring)) %07
8 BS(backspace) %08
9 HT(horizontal tab) %09
10 LF(line feed) %0A
11 VT(vertical tab) %0B
12 FF(form feed) %0C
13 CR(carriage return) %0D
14 SO(shift out) %0E
15 SI(shift in) %0F
16 DLE( выход канала передачи данных) %10
17 DC1(device control 1) %11
18 DC2(device control 2) %12
19 DC3(device control 3) % 13
20 DC4(device control 4) %14
21 NAK(negative acknowledge) %15
22 SYN(synchronize) %16
23 ETB (блок конечной передачи) %17
24 CAN (CANCEL) %18
%18
25 %18
25 %
25. 26 SUB(substitute) %1A
27 ESC(escape) %1B
28 FS(file separator) %1C
29 GS(разделитель групп) %1D
30 RS(record separator) %1E
31 US(unit separator) %1F
32 space %20
33 ! %21
34 " %22
35 # %23
36 $ %24
37 % %25
38 & %26
39 ' %27
40 ( %28
41 ) %29
42 * %2A
43 + %2B
44 , %2C
45 - %2D
46 . %2E
47 / %2F
48 0 %30
49 1 %31
50 2 %32
51 3 %33
52 4 6 5 39 11127 7 5 %35
54 6 %36
55 7 %37
56 8 %38
57 9 %39
58 : %3A
59 ; %3B
60 < %3C
61 = %3D
62 > %3E
63 ? %3F
64 @ %40
65 A %41
66 B %42
67 C %43
68 D %44
69 E %45
70 F %46
71 G %47
72 H %48
73 I %49
74 J %4A
75 K %4B
76 L %4C
77 M %4D
78 N %4E
79 O %4F
80 P %50
81 Q % 51
82 R %52
83 S %53
84 T %54
85 U %55
86 V %56
87 W %57
88 X %58
89 Y %59
90 Z %5A
91 [ %5B
92 \ %5C
93 ] %5D %5E
95 _ %5F
96 ` %60
97 a %61
98 b %62
99 c %63
100 d %64
101 e %65
102 f %66
103 g %67
104 h %68
105 i %69
106 j %6A
107 k %6B
108 l %6C
109 m %6D
110 n %6E
111 o %6F
112 p %70
113 q %71
114 r %72
115 s %73
116 t %74
117 u %75
118 v %76
119 w %77
120 x %78
121 y %79
122 z %7A
123 { %7B
124 | %7C
125 } %7D
126 ~ %7E
127 DEL(удалить (удалить)) %7F

Сноски

Ресурс 5 9153
  • Что должен знать каждый разработчик о кодировании URL
  • Почему существует кодировка URL для набора символов ASCII
  • RFC 3986 — Унифицированный идентификатор ресурса (URI): общий синтаксис.
  • Проверка

    . Какие символы делают URL-адрес недействительным?

    Большинство существующих здесь ответов непрактичны, потому что они полностью игнорируют реальное использование таких адресов, как:

    • https://en.wikipedia.org/wiki/Möbius_strip или
    • https://zh.wikipedia.org/wiki/Википедия:关于中文维基百科/en.

    Сначала небольшое отступление от терминологии. Какие это эти адреса? Являются ли они действительными URL-адресами?

    Исторически ответ был "нет". Согласно RFC 3986 от 2005 года такие адреса не являются URI (и, следовательно, не URL-адресами, поскольку URL-адреса являются типом URI). Согласно терминологии стандартов IETF 2005 года, мы должны правильно называть их IRI (интернационализированными идентификаторами ресурсов), как определено в RFC 39.87, которые технически не являются URI, но могут быть преобразованы в URI просто путем процентного кодирования всех символов, отличных от ASCII, в IRI.

    Согласно современной спецификации ответ "да". WHATWG Living Standard просто классифицирует все, что ранее называлось «URI» или «IRI», как «URL». Это приводит в соответствие терминологию спецификации с тем, как обычные люди, не читавшие спецификацию, используют слово «URL», что было одной из целей спецификации.

    Какие символы разрешены в соответствии с WHATWG Living Standard?

    В соответствии с этим новым значением «URL», какие символы разрешены? Во многих частях URL-адреса, таких как строка запроса и путь, нам разрешено использовать произвольные «единицы URL», которые равны

    .

    кодовых точки URL и процент закодированных байтов.

    Что такое "кодовые точки URL"?

    Кодовые точки URL-адреса представляют собой буквенно-цифровые символы ASCII, U+0021 (!), U+0024 ($), U+0026 (&), U+0027 ('), U+0028 ЛЕВАЯ СКОБКА, U+0029 ПРАВАЯ СКОБКА , U+002A (*), U+002B (+), U+002C (,), U+002D (-), U+002E (.), U+002F (/), U+003A (:), U+003B (;), U+003D (=), U+003F (?), U+0040 (@), U+005F (_), U+007E (~) и кодовые точки в диапазоне U+ От 00A0 до U+10FFFD включительно, за исключением суррогатов и несимволов.

    (Обратите внимание, что список «кодовых точек URL» не включает % , но % разрешены в «единицах кода URL», если они являются частью последовательности процентного кодирования.)

    Единственное место, где я могу заметить, что спецификация разрешает использование любого символа, который является , а не в этом наборе, — это хост, где адреса IPv6 заключены в [ и ] символов. Везде в URL-адресе разрешены либо единицы URL-адреса, либо еще более строгий набор символов.

    Какие символы разрешались в старых RFC?

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

    Прежде всего, у нас есть два типа зарезервированных символов RFC 3986:

    • :/?#[]@ , которые являются частью общего синтаксиса для URI, определенного в RFC 3986
    • .
    • !$&'()*+,;= , которые не являются частью общего синтаксиса RFC, но зарезервированы для использования в качестве синтаксических компонентов определенных схем URI. Например, точки с запятой и запятые используются как часть синтаксиса URI данных, и & и = используются как часть вездесущего формата ?foo=bar&qux=baz в строках запросов (который не является , указанным в RFC 3986).

    Любой из указанных выше зарезервированных символов может быть законно использован в URI без кодирования либо для выполнения своих синтаксических целей, либо просто в качестве буквенных символов в данных в некоторых местах, где такое использование не может быть неправильно истолковано как символ, служащий его синтаксическому назначению. (Например, хотя / имеет синтаксическое значение в URL-адресе, вы можете использовать его незакодированным в строке запроса, потому что не имеет значение в строке запроса. )

    RFC 3986 также указывает некоторые незарезервированных символов, которые всегда можно использовать просто для представления данных без какой-либо кодировки:

    • abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~

    Наконец, сам символ % разрешен для процентного кодирования. 9`{|}

    Любой другой символ из ASCII может по закону использоваться в URL-адресе.

    Затем RFC 3987 расширяет этот набор незарезервированных символов следующими диапазонами символов Юникода:

     %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF
    / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD
    / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD
    / %x70000-7FFFD / %x80000-8FFFD / %x

    -9FFFD / %xA0000-AFFFD / %xB0000-BFFFFD / %xC0000-CFFFD / %xD0000-DFFFD / %xE1000-EFFFD

    Эти варианты блоков из старой спецификации кажутся странными и произвольными, учитывая последние определения блоков Unicode; вероятно, это связано с тем, что блоки были добавлены за десятилетие, прошедшее с момента написания RFC 3987.