27. september 2006 - 14:03Der er
36 kommentarer og 2 løsninger
Hjælp til querystring
Jeg forsøger at lave lidt kode der skal håndtere nogle mail formulare. Dvs at man fra en html side kan sende en mail med x antal oplysninger. noget alla:
1. Når method="post" i formen modtager jeg ikke noget via quesystring, sætter jeg den til param modtager jeg alt for meget. Jeg ved ikke hvilke felter der er i den form men skal bare udskive dem alle.
2. Ændre jeg method="GET" til kan jeg godt modtage parameterne men så mangler æ ø å, vil også helst proge post...
Det er heller ikke problemet, for det er de parameter jeg får når jeg sender fra en aspx til en anden. Men når jeg submitter en form fra en html side skriver den følgende %E5%E5%E5%E5
Hmm sikker på der står =E5%E5%E5 og ikke %E5%E5%E5 ? Det ser fint ud, der kan du også bruge UrlDecode måske uden encoding, ellers er encodingen ISO88591
Jeg tror ikke at det er der det går galt. Det er som om at den bare ikke henter de tegn, lige meget hvordan jeg decoder den querystring kommer der ingen special tegn, eller andre underlige tegn :-( skriver jeg eks. 1ååå1 udskriver den bare 11.
Jeg har prøvet at hente hele url'en (Request.Url.AbsoluteUri.ToString();), når jeg gør det virker det får jeg også specialtegn med. Men jeg skulle gerne have det til at virke uden parameter i url'en (Jeg skal bruge method="POST" fra min form)
Jeg ser ud til at sidde med same problem. Mit problem er at der UrlEncodes i en ClassicASP-side til ASCII, og jeg skal bruge værdien i en ASP.NET side som absolut vil decode med UTF-8 som tegnsæt. URLEncoding er forskellig alt efter tegnsæt.
Den eneste løsning jeg kan finde er at trække værdien ud af request.ServerVariables("QUERY_STRING") eller Request.Url.AbsoluteUri.ToString() som du foreslår. Lidt grimt, men...
ASP.NET laver automatisk en URLDecode når den parser GET parametrene igennem, og skriver dem i Request.QueryString collection'en. Det er her dine æøå forsvinder, fordi asp.net bruger en anden encoding, end din webbrowser når den sender formen. De ukendte encodede chars bliver så bare ignoreret.
Så vidt jeg kan forstå har du to sider. Een med formen, og en anden der skal modtage POST requested. Er de begge i .net? Prøv at sætte ResponseEncoding="utf-8" i @page direktivet på begge to. Jeg tror nu stadig dit problem er at den ene side er ASCII, og den anden er utf-8.
Prøv at lave en test-side der sender POST til sig selv. Får du samme problem ?
form accept-charset er vist desværre ikke implementeret i nogen browsere
I text-editorer kan man sjældent vælge om man vil gemme sin fil i ASCII eller utf-8. De bliver som regel gemt i den encoding de blev åbnet i. Det kan derfor være at du kan gemme outputtet fra din aspx-side, som er utf-8. Du kan så copy/paste indholdet fra din html-source ind i din nye utf-8 fil, og med lidt held er den nu utf-8. Med endnu mere held kommer den også ud af webserveren som utf-8 og formen i browseren returnerer så i utf-8.
atke: Det afhjalp problemet, nu er problemet bare at jeg ikke er så pjattet med at der skal tilføjes noget i headeren på HTML side, ja jeg er vansklig :-)
Det et mail-script der skal bruges til et webhotel så det skal gerne være så simplet at implemeneter som muligt. Alle andre mail-script jeg har set kræver heller ikke at man skal angive noget i headeren.
Jeg gentager lige mig selv: Man bør *altid* have en DOCTYPE og en Content-Type-angivelse på *alle* sine sider. Man kan til nøds undvære DOCTYPE (så går browserne i quirks-mode), men content-type bør altid sættes.
Hvordan besværliggør en indsættelse af <meta http-equiv="Content-type" content="text/html; charset=utf-8"> mellem <head> og </head> implementeringen? Hvis den ikke er der, er det sjusk - Ganske simpelt :) Som et plus, gør den også at ÆØÅ vises korrekt for alle brugere ;P
Du siger selv at du kan finde æøå som ASCII UrlEncoded i Request.Url.AbsoluteUri.ToString(). Jeg foreslår at du manuelt parser den og decoder selv. Noget i stil med:
Jeg ved dog ikke hvordan du finder ud af om formen er sendt i ASCII eller utf-8. Hvis du ville have værdierne fra POST, må der være en tilsvarende rå version af postdata et sted.
Synes godt om
Ny brugerNybegynder
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.