Avatar billede nielsbrinch Nybegynder
10. august 2005 - 14:55 Der er 8 kommentarer og
1 løsning

Skift af encoding i Request.Form-indhold

Jeg er i en situation hvor Request.Form-indholdet er encoded med ISO-8859-1 men ASP.NET tror det er UTF-8, og den henter derfor æøå ud forkert. Den situation kan jeg ikke lave om på - jeg skal bare se om jeg alligevel kan få indholdet korrekt ud.

Jeg kan se hvis jeg henter indholdet af Request.InputStream og encoder med ISO-8859-1, at så er indholdet korrekt, men det er det ikke hvis jeg bruger Request.Form["feltnavn"]

Det hjælper ikke at sætte Request.ContentEncoding = Encoding.GetEncoding("iso-8859-1"); inden jeg henter værdierne ud.

Hvordan får jeg den til at hente værdierne ud rigtigt, uden at skulle lave streng-gymnastik i den rå streng i InputStream?
Avatar billede arne_v Ekspert
10. august 2005 - 15:18 #1
s = Encoding.Default.GetString(Encoding.UTF8.GetBytes(s));

er det streng gymnastik ?
Avatar billede arne_v Ekspert
10. august 2005 - 15:19 #2
s er bare en string som kommer fra Request.Form["feltnavn"]
Avatar billede nielsbrinch Nybegynder
10. august 2005 - 15:50 #3
Nej, det var ikke det jeg mente med streng-gymnastik. Det var hvis jeg skulle tage den rå "InputStream" og finde frem til nøgler og værdier i den.

Desværre virker dit eksempel ikke i situationen. Jeg går ud fra det er fordi æøå allerede er forsvundet når s hentes ud af Request.Form. Man kan jo ikke encode sig frem til dem når de først er væk.
Avatar billede arne_v Ekspert
10. august 2005 - 15:59 #4
Sært - ISO-8859-1 ÆØÅ fortolket som UTF-8 plejer at blive bevaret men vist som spørgsmålstegn

hvis ÆØÅ ikke er i Request.Form["feltnavn"], så kan det jo i sagens natur ikke
lade sig gøre at hive dem ud af den

men er det svært at parse ?
Avatar billede arne_v Ekspert
10. august 2005 - 16:00 #5
fra lageret:

    public static NameValueCollection Parse(string s)
    {
        NameValueCollection res = new NameValueCollection();
        string[] parts = s.Split("=&".ToCharArray());
        for(int i = 0; i < parts.Length/2; i++)
        {
            res.Add(parts[2*i], parts[2*i+1]);
        }
        return res;
    }
Avatar billede nielsbrinch Nybegynder
10. august 2005 - 16:03 #6
Tak.

Ja du har ret, jeg kan bare parse manuelt, men jeg havde bare en følelse af at "det kan da ikke være meningen".

På den anden side - specielle situationer kræver specielle metoder.

Læg et svar.
Avatar billede arne_v Ekspert
10. august 2005 - 16:07 #7
Ude i den virkelige verden er der meget som er fastlagt/fastlåst.

Du kunne også vente og se om større ASP.NET guruer end mig kom forbi.

Og et svar.
Avatar billede nielsbrinch Nybegynder
10. august 2005 - 16:10 #8
Ja, men jeg vil hellere videre.

Desuden er du jo den største ;-)
Avatar billede arne_v Ekspert
10. august 2005 - 16:15 #9
Sært - det påstår min bade vægt også ...

:-)
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

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