Vinnaren i pepparkakshustävlingen!
2010-11-06, 19:13
  #1
Medlem
När jag använder decodeURIComponent på en strän (som jag plockat ur URL:en) så lyckas den omvandla alla %xx till vanliga tecken, (t.o.m. kinesiska tecken fungerar.

Dock är det ett tecken som inte fungerar, mellanrum.

När jag postar "x + 3 = 5"

Står det "x+%2B+3+%3D+5" i adressfältet.

När decodeURIComponent sedan ska göra det till vanliga tecken blir det "x+++3+=+5"


Hur ska jag lösa detta?
Citera
2010-11-06, 21:31
  #2
Medlem
Lyckades fixa det genom att köra
Kod:
replace(/\+/g'%20'); 

Det verkar som att decodeURIComponent förväntar sig att mellanrum är angivna som %20, medan webbläsarna jag testade skriver mellanrum som +.
Citera
2010-11-07, 02:57
  #3
Medlem
ei96byods avatar
Detta är ett vanligt problem, speciellt när man för över information mellan PHP och Javascript. Det finns många olika kodnings-/avkodningsfunktioner, både i PHP och Javascript. Det gäller bara att välja rätt avkodningsfunktion för rätt ändamål.

Här är en bra länk där du kan testa hur de olika funktionerna beter sig när de kodar/avkodar, och jämföra dem tillsammans: http://www.the-art-of-web.com/javascript/escape/

Med andra ord skall du matcha funktionen mot den funktionen som har använts för att SKAPA URL-variablerna.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback