Avatar billede illbeback Nybegynder
29. august 2003 - 18:40 Der er 12 kommentarer og
1 løsning

Encoding af special characters (æøå) på HttpWebRequest

I en C# Web Service henter jeg oplysninger fra en ASP side. Denne ASP skal have parametre i querystring for at fungere korrekt. Problemet opstår når der optræder special characters som f.eks. æøå i querystring'en.
Når jeg debugger (Visual Studio) kan jeg se at det som f.eks. skulle have været:

http://localhost/projekt/tegntest.asp?parm1=æøå

bliver til

http://localhost/projekt/tegntest.asp?parm1=%C3%A6%C3%B8%C3%A5

Dette opfatter ASP'em som 6 byte - nemlig: æøå

Jeg har forsøgt mig med at encode parameteren i qyerystringen - og det ser fint ud inden selve requestet bliver skabt som f.eks.

oRequest = (HttpWebRequest)WebRequest.Create(string.Format("http://localhost/projekt/tegntest.asp?parm1=æøå"));

- der går det galt.

For mig ser det ud som at æøå er unicode UTF-8 konverteret til ASCII på en eller anden måde.

Er der nogen der har en løsning på på dette problem ?
Avatar billede arne_v Ekspert
29. august 2003 - 19:01 #1
æøå må ikke angives direkte i en query string - de skal encodes.

Det ser ud som om din C# kode kører i UTF-8 mens din ASP side
kører i ISO-8859-1.

Enten få din C# kode til at encode i ISO-8859-1 *eller* få din ASP
side til at decode UTF-8.
Avatar billede illbeback Nybegynder
29. august 2003 - 19:22 #2
At rette i ASP'erne er ikke en option.
Hvordan får jeg WebServicen til at encode i ISO-8859-1 ? Mener du den option man kan sætte i web.config (globalization tagget) eller encode
HttpWebRequest objectet eller querystringen ?
Avatar billede illbeback Nybegynder
29. august 2003 - 19:25 #3
Er Microsoft Windows Codepage : 1252 (Latin I) det samme som ISO-8859-1 ?
Avatar billede illbeback Nybegynder
29. august 2003 - 19:29 #4
Når jeg kører:
http://localhost/projekt/tegntest.asp?parm1=æøå
direkte fra browseren er der ingen problemer - hvad er det der gør at browseren og ASP'en er enige om codepage her ? Bliver querystringen (æøå) også encoded af browseren inden den sendes til serberen ?
Avatar billede arne_v Ekspert
29. august 2003 - 19:29 #5
Prøv lige og start med at test om:

http://localhost/projekt/tegntest.asp?parm1=%E6%F8%E5

virker !

Hvis det gør det så skal vi have fundet den bedste måde at URL encode
med ISO-8859-1.

Formentligt er der noget smart i .NET (jeg er selv begynder i C# og .NET).

Men worst case er jo nogle almindelige replaces.
Avatar billede illbeback Nybegynder
29. august 2003 - 19:31 #6
Ja undskyld - serVeren - det var ikke min at mening at bringe etniske aspekter ind i denne tråd.
Avatar billede illbeback Nybegynder
29. august 2003 - 19:35 #7
Yep - det virker !
Der er helt sikkert en .NET-agtig løsning - jeg kan heller ikke lige forestille mig HVAD det er jeg skal replace hvis jeg kommer derud.
Avatar billede illbeback Nybegynder
29. august 2003 - 20:06 #8
Server.UrlEncode("æøå") giver "%e6%f8%e5" - er det i virkeligheden det som skal til ?
Avatar billede arne_v Ekspert
29. august 2003 - 20:08 #9
Det tror jeg !
Avatar billede illbeback Nybegynder
31. august 2003 - 18:26 #10
arne_v -> Jeg har nu afprøvet dette på en 'rigtig' server - det fungerer HVIS man husker at sætte globalization i web.config til f.eks. windows-1252. Jeg er ikke klar over om det er det samme som ISO-8859-1, men den ligner meget. Kan du ikke lægge et svar ?
Avatar billede arne_v Ekspert
31. august 2003 - 18:31 #11
CP1252 og ISO-8859-1 er næsten det samme (det samme for ÆØÅæøå o.lign. -
Microsoft har tilføjet lidt ekstra tegn i forhold til ISO-8859-1).
Avatar billede arne_v Ekspert
31. august 2003 - 18:32 #12
ok
Avatar billede illbeback Nybegynder
31. august 2003 - 18:36 #13
Når det nu næææsten virker uden at encode - er det så fordi at alm. tegn a-z 1-9 o.l. ligger samme sted både i UTF-8 og CP1252 ?
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