[go: up one dir, main page]

Kodowanie procentowe

Kodowanie procentowe (ang. percent-encoding), znane także jako kodowanie URL (ang. URL encoding) – mechanizm kodowania informacji w URI, obecnie definiowany w RFC3986[1]. Głównie jest używane do kodowania danych przesyłanych przez zapytanie GET w adresie URL. Nazwę zawdzięcza temu, że dany bajt po zakodowaniu zaczyna się znakiem procentu. Kodowanie bajtu polega na zamianie jego na dwucyfrową wartość heksadecymalną zapisaną w ASCII i poprzedzeniu tego procentem (czyli każdy zakodowany bajt jest zapisany za pomocą trójki znaków). Nie trzeba kodować znaków od A do Z, od a do z, od 0 do 9, oraz znaków „-”, „_”, „.”,„~”. Spację można zamienić na znak „+”. Jeśli znak ma specjalne znaczenie w URI (np. „/”), to nie jest kodowany, chyba że występuje w danych.

Przykład w zapytaniu GET

edytuj

Mamy formularz HTML form.html

<meta charset="utf-8"/>
<form action="http://www.w3schools.com/html/html_forms.asp" method="get">
 <input type="text" name="imie" value="Karol Łukasz">
 <input type="text" name="haslo/kod" value="4/2_a=8+4=_ ?">
 <input type="submit" value="Wyslij">
</form>

Po kliknięciu w przeglądarce wyśle ona dane poprzez przejście na stronę: http://www.w3schools.com/html/html_forms.asp?imie=Karol+%C5%81ukasz&haslo%2Fkod=4%2F2_a%3D8%2B4%3D_+%3F 1. Jeśli znak „/” występuje w danych, to podlega on kodowaniu do „%2F”. Jeśli jednak ten znak ma specjalne znaczenie przy nazwie protokołu lub rozdziela katalogi, to nie podlega kodowaniu. Podobnie jest ze znakami specjalnymi „?”, „=”, „&”. 2. Litery spoza zakresu ASCII zostają zakodowane. W tym wypadku „Ł” jako „%C5%81”, ponieważ w UTF-8 ta litera jest zapisywana za pomocą dwóch bajtów, to obydwa trzeba było zakodować procentowo.

Przypisy

edytuj

Linki zewnętrzne

edytuj