Kodowanie procentowe – Wikipedia, wolna encyklopedia
Ten artykuł od 2014-10 wymaga zweryfikowania podanych informacji. |
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 | edytuj kod]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 | edytuj kod]Linki zewnętrzne
[edytuj | edytuj kod]- T. Berners-Lee , R. Fielding , L. Masinter , Uniform Resource Identifier (URI): Generic Syntax, STD 66, RFC 3986, IETF, styczeń 2005, DOI: 10.17487/RFC3986, ISSN 2070-1721, OCLC 943595667 (ang.).