Avatar billede blue_11 Nybegynder
07. marts 2009 - 18:05 Der er 12 kommentarer

UrlEncode item til Querystring problem

Jeg har det problem at jeg gerne vil overfører en querystring værdi fra en side til en anden, jeg har valgt at encode disse værdier da der kan forekomme special tegn, men når jeg henter querystring værdien ned bliver det til en firkant.

Min Querystring ser ud som følger:
id=%c3%85RSABO01

Det er ÅRSABO01 encoded via HttpUtility.UrlEncode

Når jeg henter denne Querystring parameter ned og laver en
"throw new exception" på den får jeg � det er alt hvad jeg får, intet andet :-/
er der nogen der kan komme med nogle gode input omkring hvad jeg gør forkert??
Avatar billede arne_v Ekspert
07. marts 2009 - 18:06 #1
Jeg tror at der er koks i UTF-8 versus ISO-8859-1.
Avatar billede blue_11 Nybegynder
07. marts 2009 - 18:20 #2
Hmmm.. du har nok ret, så skal jeg bare lurer hvordan jeg løser det.
Avatar billede blue_11 Nybegynder
07. marts 2009 - 18:55 #3
Har indsat:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"></globalization>

i web.config.

Jeg har sørget for at encoding er med:
HttpUtility.UrlEncode(itemNo, System.Text.Encoding.UTF8)

Og decoding er:
HttpUtility.UrlDecode(Request.QueryString["id"], System.Text.Encoding.UTF8);

Men stadig nøjagtig det samme :-/ Kan også se at Å er lavet om til %c3%85 som decoded bliver à sidder lidt fast...
Avatar billede blue_11 Nybegynder
07. marts 2009 - 19:22 #4
Hmm..
hvis jeg bruger System.Text.Encoding.Default istedet for i encoding så bliver Å til %c5 som er korrekt.

Dog bliver Å stadig til en firkant ved decoding. :-/ så nu får jeg (firkant)RSABO01
Avatar billede erikjacobsen Ekspert
07. marts 2009 - 23:18 #5
Å i UTF-8 er hex C3 85
Å i ISO-8859-1 er hex C5

Din sidste kommentar er derfor mærkelig, ved at du mener at "Å til %c5" er korrekt, når du gerne vil bruge utf-8.

Så siger du "Kan også se at Å er lavet om til %c3%85 som decoded bliver Ã" - Men à i ISO-8859-1 er netop hex C3.

Det lyder virkelig som om de to nævnte tegnsæt bliver blandet sammen.
Avatar billede blue_11 Nybegynder
08. marts 2009 - 10:31 #6
Men hvis de bliver blandet sammen, burde jeg så ikke kunne undgå dette vil at benytte f.eks System.Text.Encoding.UTF8 til både encoding og decoding?

Har prøvet både med:
System.Text.Encoding.UTF8
Encoding.GetEncoding("ISO-8859-1")

Af en eller anden grund får jeg kun en firkant ud fra Request.QueryString hvis jeg encoder det til UTF8 så Å bliver til %c3%85.

Hvis jeg derimod bruger Encoding.Default så bliver Å til %c5 og jeg får (firkant)RSABO01 så kun Å der ikke decodes korrekt.
Avatar billede erikjacobsen Ekspert
08. marts 2009 - 20:57 #7
Data og visning af data skal være i samme tegnsæt. Viser du fx tekst på en webside, skal websiden være indstillet til det samme tegnsæt. Kommer data ind fra brugere, eller på anden vis, skal de være i samme tegnsæt. Jeg kan ikke fra dine oplysninger se hvor det går galt for dig.
Avatar billede blue_11 Nybegynder
09. marts 2009 - 18:41 #8
Hvilken info skal du bruge? fordi sidder ret fast her :(

Jeg tegner en liste af elementer for brugeren hvor som postbackUrl opsættes af en funktion som bygger linket op, som f.eks:

http://www.mitdomæne.dk/?id=" + HttpUtility.UrlEncode(itemNo, Encoding.Default)

Så ser adressen i browseren ud som følger:
http://www.mitdomæne.dk/?id=%c5RSABO01

Når modtager siden henter QueryString parameter værdien ned med

string pID = HttpUtility.UrlDecode(Request.QueryString["id"], Encoding.Default);

og jeg kaster jeg så en exception og viser værdien af pID får jeg:(firkant)RSABO01
Avatar billede erikjacobsen Ekspert
09. marts 2009 - 20:34 #9
http://www.mitdomæne.dk/?id=%c5RSABO01  <- ligner iso-8859-1

Request.QueryString["id"] er vel allerede url-decodet.
Avatar billede blue_11 Nybegynder
09. marts 2009 - 20:45 #10
Hvis jeg skriver Querystring parameteren direkte ud får jeg:
(firkant)RSABO01
Avatar billede erikjacobsen Ekspert
09. marts 2009 - 21:55 #11
Så skulle den måske være encoded som utf-8.
Avatar billede blue_11 Nybegynder
10. marts 2009 - 09:09 #12
Jeg har også prøvet UTF-8 både i encoding og decoding, og så får jeg kun en firkant ned som QueryString parameter :-/
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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