Avatar billede kornfreak Nybegynder
19. juni 2002 - 15:12 Der 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:

    <globalization
            requestEncoding="utf-7"
            responseEncoding="utf-8"
            culture="da-DK"
            uiCulture="da"
  />

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?
Avatar billede jakobandersen Nybegynder
19. juni 2002 - 15:22 #1
Bruger du Server.URLEncode?
Avatar billede kornfreak Nybegynder
19. juni 2002 - 17:25 #2
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.
Avatar billede jakobandersen Nybegynder
19. juni 2002 - 17:29 #3
Kan du evt reproducere fejlen i et simpelt eksempel
Avatar billede kornfreak Nybegynder
19. juni 2002 - 17:46 #4
Lav et webproject med ovenstående Globalization settings. Lav en test Web Form (aspx-side) der GET-submitter til sig selv (her kaldet Test.aspx):

  <form action="Test.aspx">
    <input type="text" name="t">
  </form>

  <%
      if( Request.QueryString["t"] != null )
      {
        Response.Write("Request.QueryString[\"t\"] =
              [" + Request.QueryString["t"] + "]");
      }
  %>

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.
Avatar billede kornfreak Nybegynder
24. september 2002 - 21:00 #5
Lukker!
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester