Avatar billede Henning3 Nybegynder
19. juni 2010 - 10:24 Der er 12 kommentarer og
1 løsning

Url encoding?

Hejsa

jeg har et navne felt i en database (MSSQL2005), som indgår i en URL. Navne feltet indeholder ord med tegn som: León.

I URL'en bliver det vidst sådan her: le%c3%b3n
vil bare gerne have den til at vise: leon

skal der kodes en metode som kan encode special chars eller hvordan gør i andre?

På forhånd tak.

Mvh H.
Avatar billede erikjacobsen Ekspert
19. juni 2010 - 11:18 #1
ó sm UTF-8 og derefter URL-encodet, giver (formentlig) %c3%b3

Hvis du vil have "leon" med i URL-en, er det så fordi du skal bruge værdien til at finde rækken i databasen igen? Det er jo ikke bare sådan, når de to værdier nu ikke længere er ens.

Men det kan du gøre ved fx at have et felt mere, ved siden af "León" hvor du så ved indsættelse beregner dig frem til "Leon". Og så søger du på det.
Avatar billede arne_v Ekspert
20. juni 2010 - 04:28 #2
Hvis du vil have konverteret vesteuropæiske accent tegn til deres nærmeste UK ASCII ekvivalent, så tror jeg at du skal skrive noget selv.

StringBuilder
en for løkke
en switch
Avatar billede Henning3 Nybegynder
20. juni 2010 - 13:53 #3
-> erikjacobsen

det er rent visuelt lige pt.

Og det jeg henter ud af DB er med ID indtil videre.
Avatar billede Henning3 Nybegynder
20. juni 2010 - 13:55 #4
-> arne_v

der må findes en skrevet metode eller et lib. der ude, som jeg selv kan tilføje i mit StringUtil class  :-)
Avatar billede Henning3 Nybegynder
20. juni 2010 - 14:55 #5
hej igen
har prøvet mig frem med at se på hver enkelt ord for så at udskifte et bogstav i et ord, men det lykkedes mig ikke. Har i nogen forslag til at opdatere denne metode, så den kan det?

Som i kan se skal jeg skrive hele Ordet så det matcher det i DB, for at den switcher.

-------------------------------------------------------------

public static string ReplaceCharInWord(string input)
        {
            StringBuilder sb = new StringBuilder();
            switch (input)
            {
                case "Castilla y León": sb.Append("Castilla y Leon");
                    break;
                case "Avan Terruño de Valdehernando": sb.Append("Avan Terruno de Valdehernando");
                    break;
                default:
                    break;
            }
            return sb.Replace(" ", "-").ToString().ToLower();
        }

-------------------------------------------------------------
Avatar billede arne_v Ekspert
20. juni 2010 - 19:38 #6
Den skal laves på chars - ikke på ord.
Avatar billede arne_v Ekspert
20. juni 2010 - 19:55 #7
Demo:

using System;
using System.Text;

namespace E
{
    public static class StrUtil
    {
        public static string ToAscii(this string s)
        {
            StringBuilder sb = new StringBuilder();
            foreach(char c in s)
            {
                switch (c)
                {
                    case 'È':
                    case 'É':
                    case 'Ë':
                    case 'Ê':
                        sb.Append('E');
                        break;
                    case 'è':
                    case 'é':
                    case 'ë':
                    case 'ê':
                        sb.Append('e');
                        break;
                    case 'Ò':
                    case 'Ó':
                    case 'Ö':
                    case 'Ô':
                    case 'Õ':
                        sb.Append('O');
                        break;
                    case 'ò':
                    case 'ó':
                    case 'ö':
                    case 'ô':
                    case 'õ':
                        sb.Append('o');
                        break;
                    case 'À':
                    case 'Á':
                    case 'Ä':
                    case 'Â':
                    case 'Ã':
                        sb.Append('A');
                        break;
                    case 'à':
                    case 'á':
                    case 'ä':
                    case 'â':
                    case 'ã':
                        sb.Append('a');
                        break;
                    case 'Ì':
                    case 'Í':
                    case 'Ï':
                    case 'Î':
                        sb.Append('I');
                        break;
                    case 'ì':
                    case 'í':
                    case 'ï':
                    case 'î':
                        sb.Append('i');
                        break;
                    case 'Ý':
                        sb.Append('Y');
                        break;
                    case 'ý':
                    case 'ÿ':
                        sb.Append('y');
                        break;
                    case 'Ù':
                    case 'Ú':
                    case 'Ü':
                    case 'Û':
                        sb.Append('U');
                        break;
                    case 'ù':
                    case 'ú':
                    case 'ü':
                    case 'û':
                        sb.Append('u');
                        break;
                    case 'Ñ':
                        sb.Append('N');
                        break;
                    case 'ñ':
                        sb.Append('n');
                        break;
                    default:
                        sb.Append(c);
                        break;
                }
            }
            return sb.ToString();
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Castilla y León".ToAscii());
            Console.WriteLine("Avan Terruño de Valdehernando".ToAscii());
            Console.ReadKey();
        }
    }
}
Avatar billede arne_v Ekspert
20. juni 2010 - 19:55 #8
Tilføj selv tegn til switchen hvis jeg har glemt nogle.
Avatar billede Henning3 Nybegynder
21. juni 2010 - 10:13 #9
Tak for det - det virker bare!
Avatar billede Henning3 Nybegynder
21. juni 2010 - 10:15 #10
Jeg er ik med... har jeg givet mig selv point eller hvad? hehehehe
Avatar billede arne_v Ekspert
21. juni 2010 - 16:10 #11
Ja!

:-(
Avatar billede Henning3 Nybegynder
21. juni 2010 - 17:09 #12
sorry!

opretter lige et shadow indlæg!

hvis du svarer på det, så giver jeg dig points med ref. til denne tråd :-)
Avatar billede Henning3 Nybegynder
21. juni 2010 - 17:11 #13
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
Kurser inden for grundlæggende programmering

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