Почему символ 嘊 кодируется URL как% E5% 98% 8A? - PullRequest
0 голосов
/ 06 мая 2020
• 1000 1008 * десятичное представление и 嘊 как HTML шестнадцатеричное (поправьте меня, если я ошибаюсь). Так почему же браузер будет кодировать URL как% E5% 98% 8A?

Я предполагаю, что для рендеринга 嘊 требуется более 7 бит (так что мы вышли за пределы диапазона ASCII), поэтому символ 嘊 состоит из нескольких байтов (один из них "переместится" в другой набор кодов) и% E5% 98% 8A - это три шестнадцатеричных числа, которые представляют 3 десятичных знака 229, 152, 10, и эта последовательность десятичных знаков представляет 嘊, если мы попытаемся преобразовать его в UTF- Кодировка 8.

Я прав? Заранее благодарим за разъяснения!

Ответы [ 2 ]

4 голосов
/ 06 мая 2020

Похоже, путаница возникла из-за смешения значений "Unicode" и "UTF-8". Юникод - это стандарт, который в основном присваивает номер каждому символу (*). Вот что такое U + 560A: кодовая точка Unicode 560A (которая является шестнадцатеричной для 22026). Десятичные и шестнадцатеричные символы HTML / XML напрямую используют это значение без какой-либо кодировки, поэтому вы можете просто указать это число.

«Юникод» сам по себе еще не является кодировкой. Это означает, что он не определяет уникального сопоставления того, как сопоставить эти символы с байтами.

UTF-8 - одно из таких сопоставлений, которое в основном пытается сопоставить каждую кодовую точку Unicode где-либо между 1 и 4 байтами (чем выше кодовая точка, тем длиннее последовательность байтов).

Кодирование URL обрабатывает текст с определенной кодировкой c, поэтому он должен кодировать байты, созданные UTF-8.

(*) это намного сложнее, и они определяют гораздо больше, чем просто символы, но для цели этого ответа это достаточно близко.

3 голосов
/ 06 мая 2020

Как вы говорите, код для 嘊 - U + 560A. Кодировка UTF-8 этой кодовой точки - 0xE5 0x98 0x8A, и именно она затем% кодируется в URL-адрес.

...