Ošizené urlencode dle google rubrika: Programování: PHP

8 rmaslo
položil/-a 1.7.2017
 
upravil/-a 1.7.2017

Pro jednu aplikaci vkládám do URL celkem dost speciálních znaků. Hlavně znaky cest jako dvojtečka a lomítko. Bylo by hezké kdyby nemusely být urlencodované
Všiml jsme si, že třeba google urlencode docela šidí. Pokud zadám do hledání speciální znaky !#$&'()+,/:;=?@[]% zapíše google do URL klidně !%23$%26'()%2B,/:;%3D?@[]%25 . Tj. zřejmě kóduje jen #&+=%

  1. Má to oporu v nějaké normě? Hledal jsem, ale nenašel...

  2. Má s tím někdo nějaké zkušenosti, že to takto funguje bez problémů?
    Jestli jsem třeba ještě nějaký znak nezapomněl...
odkaz
12 Kit
odpověděl/-a 1.7.2017

Uvedené znaky mají speciální význam v query part of a URL.

  • # - začátek kotvy
  • & - oddělovač parametrů
  • + - náhrada za mezeru
  • = - oddělovač mezi klíčem a hodnotou
  • % - escapování

Ostatní znaky není nutné escapovat, protože žádný speciální význam v této části URL nemají.

Komentáře

  • leninzprahy : Viz "RFC 3986 - 2.2. Reserved Characters" nebo na wikipedii "URL kódování" 3.7.2017
  • Kit : V části query je těch povolených znaků prostě víc. Například $'()/:;?@[] zde nemají žádný speciální význam a proto mohou být použity bez escapování. 3.7.2017
  • rmaslo : jj na wiki jsem koukal a je mi jasné, že to normu nesplňuje. Proč je bezpodmínečně nutné encodovat těch 5 je mi také jasné. Zajímaly by mě spíše praktické zkušenosti ve smyslu zkoušel jsem to a funguje / nefunguje příp. třeba nějaké problému u exotických prohlížečů atd... 4.7.2017
  • harrison314 : Ono to co vidis v navigacnom apenli google chrome, nie je to iste co sa posiela na server, to co tam ralne je uvidis, ked si tu asresu skopirujes do textoveho suboru (napriklad vidiet to na diakritike). 4.7.2017

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.