URL кодировчик: Избягване на специални знаци в URLs онлайн безплатно
Безплатен инструмент за кодиране на URL низове, който веднага преобразува специални знаци. Конвертирайте интервали, Unicode и символи във формат с процентно кодиране. Перфектен за API, уеб формуляри и международни URLs. Опитайте сега!
Кодировчик на URL низове
Документация
Кодиране на URL: какво представлява и как работи
Кодирането на URL, наричано още процентно кодиране, е начин за представяне на знаци в уеб адрес, като се използва само малък набор от безопасни ASCII знаци. То работи, като заменя небезопасния знак със знак %, последван от две шестнадесетични цифри. Този инструмент за екраниране на URL низове кодира текста по същия начин, както вградената функция на JavaScript encodeURIComponent.
Защо URL адресите се нуждаят от кодиране
URL адресът може да съдържа само ограничен набор от знаци: букви, цифри и няколко препинателни знака. Интервалите, буквите с диакритични знаци, знаците от нелатински азбуки и символи като & или = могат да повредят URL адреса или да променят значението му, ако се появят в него без кодиране. Например интервал в дадена връзка може да накара браузъра или сървъра да прочете URL адреса като две отделни части. Процентното кодиране заменя тези знаци с код, който всеки браузър и сървър може да прочете по един и същ начин.
Знаци, които този инструмент оставя непроменени
Този инструмент никога не променя следните знаци. Те се предават директно:
- Главни и малки букви:
A–Z,a–z - Цифри:
0–9 - Препинателните знаци
-._~!*'()
Всеки друг знак се кодира с процентно кодиране, включително:
- Знакът за интервал и препинателни знаци като
:/?#[]@$&+,;= - Букви с диакритични знаци и всеки друг не-ASCII или Unicode знак
- Самият знак
%, който винаги се превръща в%25, дори ако вече е бил част от процентно кодирана последователност
Някои общи ръководства за синтаксиса на URL групират ! * ' ( и ) с други препинателни знаци като знаци, които „може да се наложи да бъдат кодирани“ в някои контексти. Този конкретен инструмент не ги кодира, защото следва набора от правила на encodeURIComponent, според който те се считат за безопасни.
Как се изчислява низ с процентно кодиране (формула)
Инструментът проверява всеки знак от входа един по един и прилага следното правило:
- Ако знакът е сред изброените по-горе непроменяни знаци, той се запазва както е.
- В противен случай знакът се преобразува в неговата UTF-8-байтова последователност. Латинските букви с диакритични знаци, гръцките, кирилските и арабските букви използват два байта. Китайските, японските и корейските знаци използват три. Емотиконите използват четири.
- Всеки байт се изписва като двуцифрено шестнадесетично число.
- Пред всяка шестнадесетична двойка се поставя
%. - Получените резултати се съединяват по ред, за да се образува кодираният низ.
Пример с решение
Вход: Jürgen & Björk
Обработка знак по знак:
| Знак | Резултат |
|---|---|
J | J (непроменен) |
ü | %C3%BC (UTF-8 байта 0xC3, 0xBC) |
rgen | rgen (непроменен) |
(интервал) | %20 |
& | %26 |
(интервал) | %20 |
Bj | Bj (непроменен) |
ö | %C3%B6 (UTF-8 байта 0xC3, 0xB6) |
rk | rk (непроменен) |
Резултат: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Втори пример показва как работи непроменяният набор. Кодирането на низа -_.!~*'() дава -_.!~*'(), точно същия текст, защото всеки знак в него принадлежи към набора от незапазени знаци. Кодирането на низа 100% дава 100%25, защото самият знак % не е безопасен знак.
Декодиране на низ с процентно кодиране
Декодирането обръща процеса: всяка последователност %XX се прочита като шестнадесетичен байт, байтовете се групират обратно в първоначалния UTF-8 знак и знакът заменя последователността. Например %C3%BC се декодира обратно до ü, а %20 се декодира до интервал. Този инструмент само кодира; за обръщане на процеса е необходим отделен декодер.
Обичайни приложения
Процентното кодиране се използва винаги, когато текст, въведен от човек, а не написан от програмист, трябва да стане част от URL адрес:
- Полета за търсене, които поставят търсения термин в адресната лента, например
?q=shoes%20%26%20bags - Параметри на заявката, съдържащи имена, адреси или други потребителски данни
- Връзки към страници със заглавия на езици, които използват букви с диакритични знаци или нелатински писмености
- API заявки, които предават токени или идентификатори като част от URL адреса
Примери с код
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5Python функцията quote винаги оставя буквите, цифрите и - . _ ~ непроменени. Петте допълнителни
знака ! * ' ( ) трябва да бъдат посочени в safe, за да съвпадат с този инструмент. Без
тях quote връща съответно %21 %2A %27 %28 %29.
История
Идеята за кодиране на небезопасни знаци в URL адрес датира от RFC 1738 от (4410 cm) 1994 г., един от първите документи, определили формата на URL. RFC 3986, публикуван през 2005 г., актуализира правилата и формално дефинира набора от „незапазени“ знаци, които не е необходимо да бъдат кодирани. encodeURIComponent, функцията на JavaScript, на която е основан този инструмент, следва малко по-широк набор от незапазени знаци в сравнение с RFC 3986: тя също оставя ! * ' ( и ) некодирани, в съответствие с по-ранна версия на спецификацията за URI.
Често задавани въпроси
Каква е разликата между кодиране на URL и екраниране на URL?
Това е едно и също. И двата термина описват процентно кодиране, при което даден знак се заменя с %, последван от две шестнадесетични цифри.
Защо !, *, ', ( и ) остават непроменени в този инструмент?
Този инструмент използва encodeURIComponent, който третира тези пет знака като безопасни и ги оставя точно както са въведени. Други функции за кодиране, както и някои сървъри, може все пак да очакват те да бъдат кодирани, затова при проблем проверете системата получател.
Каква е разликата между %20 и + при интервал?
И двете означават интервал. %20 е общият начин за процентно кодиране на интервал. Знакът + е специален случай, използван само в данни с формат application/x-www-form-urlencoded, който се използва при изпращане на HTML формуляри, а не от този инструмент.
Този инструмент декодира ли вече кодирани текстове?
Не. Той само кодира. Ако входът вече съдържа знак %, този % се третира като буквален знак и в изхода се превръща в %25, вместо да бъде оставен непроменен.
Как се обработват нелатински знаци, например текст на китайски или арабски?
Всеки знак първо се преобразува в неговата UTF-8-байтова последователност, след което всеки байт се кодира с процентно кодиране. Китайският знак използва три байта, затова дава три групи %XX. Арабската буква използва два байта, затова дава две.
Кога инструментът отказва да кодира текста? Само когато текстът съдържа половината от сурогатна двойка. Сурогатната двойка е двусъставен код, който съхранява знак над U+FFFF, например емотикон. Единичната половина няма валидна UTF-8 форма, затова инструментът показва грешка вместо резултат. При обичайно въвеждане това не може да се случи; обикновено такава половина идва от съкратено копиране или повредена връзка.
Трябва ли да кодирам целия URL адрес или само част от него?
Кодирайте само частите, които съдържат потребителски данни, например стойностите на заявката или сегментите от пътя, а не частите, които изграждат структурата на URL адреса, като https:// и името на домейна. Кодирането на целия URL адрес с кодер за компоненти би превърнало и знаците :, / и ? в процентни кодове, което би повредило адреса.