Avatar billede Slettet bruger
30. september 2006 - 14:11 Der er 8 kommentarer og
1 løsning

Encoding af quesrystring parametre

Hejsa,

Jeg har lavet en lille funktion, der udtrækker querystring-parametre fra en refererende side og gemmer det til noget statistik.

Men hvis der fx. er søgt på ræv eller bær (altså noget med danske tegn), vises søgeordene en smule mærkeligt.

Jeg har forsøgt at afkode søgeordene, men det virker ikke rigtigt.

Min kode er sådan her:

protected void Page_Load(object sender, EventArgs e)
    {
        HttpContext currentRequest = HttpContext.Current;
       
        // Tjek om der er en referrer
        if (currentRequest.Request.UrlReferrer != null)
        {
            string searchPhrase = null;
            string referrerHostname = currentRequest.Request.UrlReferrer.Host.ToString();
            string referrerQuerystring = currentRequest.Request.UrlReferrer.Query;

            // Opdel referrerQuerystring i chunks
            string[] queryParts = new string[6];
            char[] splitter = { '&' };
            queryParts = referrerQuerystring.Split(splitter);
           
            // Tjek om referrer er Google
            //if (referrerHostname.Equals("localhost"))
            //{
            //    searchPhrase = queryParts[1].Replace("+", " ");
            //    searchPhrase = searchPhrase.Replace("q=", "");
            //    label_SearchPhrase.Text = searchPhrase;
            //}
            if (referrerHostname.Equals("localhost"))
            {
                searchPhrase = queryParts[0].Replace("+", " ");
                searchPhrase = searchPhrase.Replace("?q=", "");
                searchPhrase = EncodeSearchPhrase(searchPhrase);
                label_SearchPhrase.Text = searchPhrase;
            }
        }
    }

    private static string EncodeSearchPhrase(string searchPhrase)
    {
        Encoding iso = Encoding.GetEncoding("iso8859-1");
        Encoding unicode = Encoding.UTF8;
        byte[] unicodeBytes = unicode.GetBytes(searchPhrase);
        return iso.GetString(unicodeBytes);
    }
Avatar billede segato Nybegynder
30. september 2006 - 15:02 #1
Kan du ikke anvende den funktion der er i .NET til at UrlEncode og decode?

HttpUtility.UrlEncode og HttpUtility.UrlDecode
Avatar billede Slettet bruger
30. september 2006 - 16:42 #2
Jo måske. Men hvad sker der konkret når jeg benytter dette?
Vil jeg så skulle skrive noget ala:

HttpUtility.UrlEncode(querystring);

??
Avatar billede arne_v Ekspert
30. september 2006 - 17:39 #3
hvis der er problemer med ÆØÅ så tror jeg at den refererende side fortæller browseren at den
skal bruge et forkert tegnsæt
Avatar billede segato Nybegynder
30. september 2006 - 18:07 #4
Ja og så returnere den din encoded streng.
Avatar billede Slettet bruger
01. oktober 2006 - 18:34 #5
Men hvordan ville du så bygge det op, hvis du tager min kode in mente?
Jeg er lidt i tvivl om hvor du vil placere den med utility...
Avatar billede segato Nybegynder
01. oktober 2006 - 23:12 #6
string s = "bær&mås";

            string encoded = System.Web.HttpUtility.UrlEncode(s); // giver dette resultat "b%c3%a6r%26m%c3%a5s"
            string decoded = System.Web.HttpUtility.UrlDecode(encoded); // giver dette resultat "bær&mås"


Her kan du se hvor den strengen encodes og decodes. Som du kan se bliver dine æåø encoded til lidt mærkelige tegn. Og de kan decodes tilbage som jeg har vist ovenstående.
Avatar billede Slettet bruger
03. oktober 2006 - 22:45 #7
Det virker fint.
Lægger du lige et svar?
Avatar billede segato Nybegynder
04. oktober 2006 - 09:33 #8
Det jo super!
Avatar billede Slettet bruger
04. oktober 2006 - 13:50 #9
:-)
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