UltKit

URL kodlaşdırma və dekodlaşdırma

Mətni URL-də təhlükəsiz istifadə üçün kodlaşdırın və ya %20 tipli ardıcıllıqları yenidən oxunaqlı simvollara çevirin. Alət brauzerinizin öz encodeURIComponent, encodeURI və decodeURIComponent funksiyalarından istifadə edir, sorğu parametrlərini cədvəldə göstərir və serverə heç nə göndərmir.

Rejim

0 simvol · 0 söz · 0 sətir

0 simvol · 0 söz · 0 sətir

Tamamilə bu brauzer səkməsində işləyir. Mətniniz heç vaxt yüklənmir və saxlanmır.

Hər funksiya nəyi ekranlaşdırır

Brauzer funksiyalarının özü ilə hesablanıb. encodeURIComponent hərflərə, rəqəmlərə və bu işarələrə toxunmur: ! ' ( ) * - . _ ~

SimvolencodeURIComponentencodeURI
(boşluq)%20%20
!!!
"%22%22
#%23#
$%24$
%%25%25
&%26&
'''
(((
)))
***
+%2B+
,%2C,
/%2F/
:%3A:
;%3B;
=%3D=
?%3F?
@%40@
[%5B%5B
]%5D%5D
{%7B%7B
}%7D%7D
|%7C%7C
\%5C%5C
^%5E%5E
`%60%60
<%3C%3C
>%3E%3E
~~~
---
___
...
é%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80

Faiz kodlaşdırması və RFC 3986-nın ehtiyat simvolları

URL yalnız məhdud ASCII simvollar toplusundan ibarət ola bilər. URI sintaksisi üzrə 2005-ci il spesifikasiyası olan RFC 3986 onları iki qrupa bölür. Qorunmayan simvollar (A–Z, a–z, 0–9 və dörd işarə - . _ ~) heç vaxt kodlaşdırma tələb etmir. Qorunan simvolların isə öz vəzifəsi var: : / ? # [ ] @ ümumi ayırıcıları sxemi, host-u, yolu, sorğunu və fraqmenti bir-birindən ayırır, ! $ & ' ( ) * + , ; = alt ayırıcıları isə onların daxilindəki elementləri ayırır, məsələn, sorğu sətirində & və = belə işləyir. Qalan hər şey, habelə adi məlumat kimi işlənən istənilən qorunan simvol faiz kodlaşdırması ilə yazılmalıdır.

Faiz kodlaşdırması baytı % və ardınca iki onaltılıq rəqəm kimi yazır. Mətn əvvəlcə UTF-8-ə çevrilir, buna görə boşluq %20, é (iki bayt) %C3%A9 olur, emoji isə dörd %XX qrupuna çevrilir. Məhz ona görə "café & bar" axtarışı linkdə caf%C3%A9%20%26%20bar kimi görünür: & kodlaşdırılır ki, server onu yeni parametrin başlanğıcı kimi oxumasın.

encodeURIComponent, encodeURI və dekodlaşdırma

encodeURIComponent ayrıca bir hissə üçün düzgün seçimdir, məsələn, sorğu dəyəri, yol seqmenti və ya parametr kimi ötürülən yönləndirmə URL-i. O, qorunmayan simvollar və tarixi səbəblərə görə JavaScript-in toxunmadığı ! ' ( ) * istisna olmaqla hər şeyi kodlaşdırır. encodeURI (tam URL) daxil olan mətnin artıq tam ünvan olduğunu qəbul edir və qorunan simvolları saxlayır, buna görə https://example.com/a b?q=1 ünvanında yalnız boşluq kodlaşdırılır. Parametr dəyərində encodeURI işlətmək klassik xətadır: dəyər daxilindəki & və ya # olduğu kimi qalıb URL-i pozar.

Dekodlaşdır hər iki funksiyanı geri qaytarır. GET ilə göndərilən HTML formaları köhnə application/x-www-form-urlencoded formatından istifadə edir, orada boşluq %20 yox, + kimi yazılır; belə hallar üçün + simvolunu boşluq kimi qəbul et qutusunu işarəli saxlayın, telefon nömrəsində olduğu kimi, hərfi plus işarəsi vacib olanda isə işarəni götürün. Daxil edilən mətndə iki onaltılıq rəqəm gəlməyən % və ya etibarlı UTF-8 olmayan baytlar varsa, dekodlaşdırma təxmin etmək əvəzinə aydın mesajla uğursuz olur. Mətndə sorğu sətri olduqda onun parametrləri alətin altındakı cədvəldə dekodlanmış şəkildə göstərilir. URL-lərdəki binar məlumatlar üçün adətən Base64url alternativ kimi işlənir.

Tez-tez verilən suallar

URL-də boşluq %20 kimi, yoxsa üstəgəl işarəsi kimi yazılmalıdır?
Yollarda və RFC 3986 baxımından boşluq %20-dir. + forması yalnız HTML formalarının kodladığı üsulla kodlaşdırılmış sorğu sətirlərində boşluq mənasını verir, ona görə %20 hər yerdə təhlükəsiz seçimdir.
URL-də niyə %2520 yarandı?
Kodlaşdırma iki dəfə aparılıb. Birinci keçid boşluğu %20-yə çevirib, ikincisi isə % simvolunun özünü %25 kimi kodlaşdırıb. Əlavə qatı aradan qaldırmaq üçün bir dəfə dekodlaşdırın və dəyərləri kodunuzda yalnız bir nöqtədə kodlaşdırın.
Hansı simvollar heç vaxt faiz kodlaşdırması tələb etmir?
RFC 3986-dakı qorunmayan simvollar toplusu: hər iki registrdə A-dan Z-yə hərflər, 0-dan 9-a rəqəmlər, defis, nöqtə, alt xətt və tilda.
URL kodlaşdırılmadan qeyri-latın və ya milli hərflər saxlaya bilərmi?
Brauzerlər onları göstərir, lakin şəbəkədə yol və ya sorğudakı hər ASCII olmayan simvol faizlə kodlaşdırılmış UTF-8 kimi göndərilir. Domen adları isə onları xn-- etiketlərinə çevirən ayrıca sistemdən, Punycode-dan istifadə edir.
Dekodlaşdırma niyə səhv formalı ardıcıllıq barədə xəbərdarlıq edir?
Mətndə iki onaltılıq rəqəm gəlməyən % var, məsələn, hərfi "100%", yaxud baytlar etibarsız UTF-8 kimi dekodlanır. Dekodlaşdırmadan əvvəl tək qalan % işarələrini %25 kimi kodlaşdırın.