Lurifaksen Skrevet 16. september 2006 Del Skrevet 16. september 2006 Har et lite problem... Bruker Webclient til å sende en spørring til en URL. La oss si: WebClient client = new WebClient(); client.QueryString.Add("arg", "æøå"); string url = "http://hw.no/fil"; client.OpenRead(url); Resultat: "æøå" Årsak: "æøå" må "Url-enkodes": %E6%F8%E5 Men det er det som er problemet: hvis jeg endrer til: client.QueryString.Add("arg", "%E6%F8%E5"); blir resultatet ""%E6%F8%E5" - tydeligvis så blir det gjort en form for urlenkoding i QueryString automatisk! Dersom jeg derimot dropper å bruke QueryString.add, og heller setter det rett i URL'en fungerer det: url = "http://hw.no/fil?arg=%E6%F8%E5" Noen som kan forklare meg hvordan jeg kan oppnå samme resultat ved hjelp av QueryString.Add? Lenke til kommentar
tZar Skrevet 20. september 2006 Del Skrevet 20. september 2006 client.QueryString.Add("arg", UrlEncode("æøå")); Burde vel gjøre nytten? System.Web.HttpUtility namespace trenger du vel også Lenke til kommentar
Lurifaksen Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 client.QueryString.Add("arg", UrlEncode("æøå")); Burde vel gjøre nytten? System.Web.HttpUtility namespace trenger du vel også 6899467[/snapback] Det er det samme som: client.QueryString.Add("arg", "%E6%F8%E5"); Og ja, all logikk skulle tilsi at det skulle fungere, men av en eller annen grunn mottar serveren det nøyaktig slik da: %E6%F8%E5 Jeg mistenker derfor at QueryString automatisk urlenkoder, slik at når den får inn %E6%F8%E5, så oppdager den %-tegnet og bytter det ut med en url-versjon av det... Videre burde det da vært logisk at den også automatisk encoder "æøå" men det gjør den altså ikke... Lenke til kommentar
tZar Skrevet 20. september 2006 Del Skrevet 20. september 2006 Regner med du har lest denne? http://forums.microsoft.com/MSDN/ShowPost....147962&SiteID=1 Lenke til kommentar
wolf5 Skrevet 22. september 2006 Del Skrevet 22. september 2006 (endret) Har du prøvd: WebClient client = new WebClient(); client.Encoding = System.Text.Encoding.Default; client.QueryString.Add("arg", "æøå"); string url = "http://hw.no/fil"; client.OpenRead(url); Vil tro den slenger inn rett encoding istedet for UTF-8 (unicode?) som er default encoding i .Net virker det som. Samme problemstilling får man med skriving til fil ut fra en streng med .Net sine standardmetoder som ikke tar i mot Encoding. Dersom det er du som lager websiden som tar i mot URLen så kan du også decode strengen selv: string unormal = "æøå"; byte[] b = System.Text.Encoding.Default.GetBytes(unormal); byte[] b2= System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Default, b); string normal = System.Text.Encoding.Default.GetString(b2); som gir normal = "æøå" Ser også at Google også kan lese unicode. Skriv inn æøå i søket på google så ser du. Endret 22. september 2006 av wolf5 Lenke til kommentar
Lurifaksen Skrevet 22. september 2006 Forfatter Del Skrevet 22. september 2006 (endret) Har prøvd å sette client.Encoding - men det ugjør ingen forskjell. Min konklusjon er at det ikke berører det som er i Querystring - men kun opplasting av filer eller slike ting. For som sagt fungerer det hvis jeg IKKE bruker QueryString metoden til å bygge url'en. Men jeg har vel egentlig gitt opp hele greien nå, og putter det heller rett inn i URL'en uten bruk av QueryString. Det fungerer som sagt uproblematisk (ved bruk av UrlEncode() på strengen) Jeg har ikke kontroll over scriptet som tar i mot strengen Men hvis det er flere som har forslag tar jeg i mot det med takk! Endret 22. september 2006 av Lurifaksen Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå