URL кодиране и декодиране
Безплатно URL кодиране и декодиране. Кодирайте параметри или цели адреси, декодирайте последователности %XX и третирайте + като интервал. Работи в браузъра.
Как да използвате URL кодирането и декодирането
- Изберете Кодирай, за да превърнете текст във вид, безопасен за URL, или Декодирай, за да превърнете процентно кодиран текст обратно в четими знаци.
- При кодиране изберете режим: Компонент за една стойност (например параметър на заявка или сегмент от път) или Цял URL, за да кодирате пълен адрес, като запазите структурата му.
- Когато декодирате данни от HTML форма или низ на заявка, включете Третирай + като интервал, така че знаците
+да станат интервали. - Поставете текста си и копирайте резултата. Ако процентна последователност е неправилна, инструментът съобщава грешка, вместо да гадае.
Какво е URL кодиране?
URL адресите могат да съдържат само ограничен набор ASCII знаци. Някои знаци, като /, ?, #, & и =, са запазени, защото разделят частите на адреса: пътя, низа на заявката и фрагмента. Други, като интервали, кавички, букви с диакритични знаци, кирилица или емотикони, просто не са позволени. URL кодирането, наричано още процентно кодиране, решава и двата проблема, като замества всеки проблемен байт с %, следван от две шестнадесетични цифри.
Текстът първо се превръща в UTF-8 байтове и всеки байт се кодира отделно. Интервалът става %20, амперсандът става %26, é (два байта в UTF-8) става %C3%A9, а емотиконът 😀 (четири байта) става %F0%9F%98%80. Буквите на кирилица заемат по два байта всяка, така че „я“ става %D1%8F. Незапазените знаци, т.е. латинските букви, цифрите и - _ . ~, никога не се нуждаят от кодиране.
Режим „Компонент“ или режим „Цял URL“
Изборът на правилния режим е най-важното решение, а грешката е класически източник на бъгове.
Режимът „Компонент“ работи като encodeURIComponent в JavaScript. Той кодира всеки запазен знак, така че резултатът да може безопасно да се постави в една част на URL. Използвайте го за стойности на параметри на заявка, сегменти от път или всичко, което потребител е въвел. Например търсенето rock & roll става rock%20%26%20roll. Ако не кодирате &, сървърът би прочел roll като начало на нов параметър.
Режимът „Цял URL“ работи като encodeURI. Той приема, че входът вече е пълен адрес, и запазва знаците, които му дават структура, като : / ? # & и =, докато кодира интервалите и знаците извън ASCII. Използвайте го, за да изчистите адрес като https://example.com/café menu?q=tea в https://example.com/caf%C3%A9%20menu?q=tea. Не го използвайте за отделни стойности: & в стойност би останал некодиран и би счупил низа на заявката.
Добро правило: съставяйте адресите от части, кодирайте всяка стойност в режим „Компонент“ и използвайте режима „Цял URL“ само за адреси, които получавате вече сглобени.
Знакът + и кодирането на форми
HTML формите, изпратени с application/x-www-form-urlencoded, кодират интервалите като + вместо %20. Затова адресите за търсене често изглеждат като ?q=hello+world. Стандартното процентно декодиране оставя + непроменен, защото в път плюсът е просто плюс. Когато декодирате низ на заявка или данни от форма, включете Третирай + като интервал, за да получите hello world. Оставете го изключено за пътища и за стойности, при които буквалният + има значение, като телефонни номера или данни в Base64. Истински знак плюс в данните от форма се изпраща като %2B, така че се декодира правилно и в двата случая.
Поверителност
Кодирането и декодирането се изпълняват изцяло във вашия браузър. Нищо от поставеното, включително адреси, които може да съдържат токени, идентификатори на сесии или лични данни, не се изпраща към сървър и не се съхранява.
Често задавани въпроси
Защо декодирането не успява с грешка за „неправилно“ кодиране?
След % трябва да следват точно две шестнадесетични цифри, а получените байтове трябва да образуват валиден UTF-8. Низове като 100%, %G1 или съкратена последователност като %E2%82 не могат да се декодират надеждно, затова инструментът съобщава проблема, вместо да даде неправилен текст. За да включите буквален знак за процент, кодирайте го като %25.
Каква е разликата между %20 и +?
И двете могат да представят интервал, но в различен контекст. %20 е валиден навсякъде в URL. + означава интервал само в низове на заявка, кодирани като форма; другаде е буквален знак плюс.
Трябва ли да кодирам цял URL в режим „Компонент“?
Само ако целият URL сам по себе си е стойност в друг URL, например параметър redirect=. В този случай режимът „Компонент“ е точно правилният: https://a.com/?x=1 става https%3A%2F%2Fa.com%2F%3Fx%3D1.
Защо текстът ми е кодиран два пъти?
Двойно кодиране става, когато вече кодиран текст се кодира отново и %20 се превръща в %2520. Декодирайте веднъж за проверка и се уверете, че всяка стойност се кодира само в момента, в който се вмъква в URL.
Скрива ли или защитава ли URL кодирането данни?
Не. Процентното кодиране е напълно обратимо и не дава никаква сигурност. Чувствителни стойности в URL могат да попаднат в историята на браузъра и в логовете на сървъра, така че изобщо избягвайте да поставяте тайни в URL.
Сродни инструменти
- Base64 кодиране и декодиране Безплатно Base64 кодиране и декодиране с пълна поддръжка на UTF-8 и вариант base64url. Работи във вашия браузър, нищо не се качва на сървър.
- JSON форматиране и валидиране Безплатно форматиране и валидиране на JSON, което подрежда, минимизира и проверява JSON във вашия браузър, със синтактични грешки по ред и колона.