Kodowanie procentowe

Z Wikipedii, wolnej encyklopedii
To jest stara wersja tej strony, edytowana przez MalarzBOT (dyskusja | edycje) o 08:10, 7 lis 2014. Może się ona znacząco różnić od aktualnej wersji.

Kodowanie procentowe (ang. percent encoding) – kodowanie URL zdefiniowane w RFC1738[1], używane do kodowania URI. 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 '-', '_', '.','~'. Spacje 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

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 utf8 ta litera jest zapisywana za pomocą dwóch bajtów, to obydwa trzeba było zakodować procentowo.