19. juni 2002 - 15:12Der er
4 kommentarer og 1 løsning
Encoding og Request.Querystring i .NET frameworket
En .NET web-application er som standard sat op til at bruge UTF-8 encoding (i Web.Config), mens Internet Explorer - så vidt jeg ved - bruger Unicode encoding til bl.a. JScript's escape- og unescape-funktioner, og de querystrings IE laver når man submitter en form med GET som method.
Det giver det problem at specialtegn som "æ", "ø" og "å" ganske enkelt forsvinder, når man på en vilkårlig aspx-side aflæser en querystring vha. Request.Querystring. Det sker ikke fordi jeg bruger Server.URLDecode eller nogen andre metoder til at decode den givne querystring - specialtegnene er allerede forsvundet i Request.Querystring samlingen.
Jeg har prøvet at lege med mine Globalization-settings i Web.Config, og dette giver "bedste" resultat:
Resultatet er dog langt fra tilfredsstillende, for selv dette medfører at "æøå" mv. virker, gælder det kun når man bruger JScript's escape, eller lader en HTML-side GET-submitte til en aspx-side. Lader man en aspx-side GET-submitte til en anden, bliver "ø" fx. pludselig til "ø" - sandsynligvis fordi querystringen bliver encodet og decodet med forskellige tegnsæt.
Jeg vil bare gerne kunne bruge "æøå" og de øvrige europæiske specialtegn i mine querystrings - osse når jeg laver JScript escape og GET-submit. Nogen der kan hjælpe?
Når jeg skal kalde en side med querystrings vha. JScript har jeg jo ikke adgang til Server.URLEncode - der har jeg kun escape, som burde gøre det samme (- men ikke gør det i det her tilfælde). Når jeg laver en GET-form "urlencoder" browseren jo selv querystring'en - det har jeg ingen kontrol over.
Prøv at skrive noget med ÆØÅ i boksen. Bemærk hvordan det fucker op. Til gengæld virker JScript-escape fint, hvilket kan ses ved at skrive denne linje i browseren: java script:location.href="Test.aspx?t=" + escape("ÆØÅæøå);void(0);
Prøv så at ændre requestEncoding til "utf-8" i Web.Config. Nu virker siden fint når den submitter til sig selv. Til gengæld virker JScript-escape'de querystrings ikke længere - "æøå" forsvinder ganske enkelt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.