29. oktober 2005 - 01:39Der er
19 kommentarer og 1 løsning
Replace danske tegn med ae oe og aa driller
Hejsa eksperter Jeg ved godt det spørgsmål er stilt før og jeg har også kigget en del på de andre svar. Men i mit tilfælde kan jeg ikke lige få det til at virke. pointen med den function er udskifte tegn indtastet i en form til en streng som jeg kan bruge til at navngive en mappe på en server. eks: En bruger indtaster "Gården (På landet) - ved søen" min function skal så lave den om til "Gaarden_Paa_landet_-_ved_soeen". Men resultatet med nedenstående function giver "grden_p_landet_-_ved_sen" Jeg håber en af jer kan se hvorfor
Function RemoveIllegals(str) 'First convert Danish chars and space str = Replace(str, " ", "_") 'Space str = Replace(str, "æ", "ae") 'æ Chr(230) str = Replace(str, "Æ", "Ae") 'Æ Chr(198) str = Replace(str, "ø", "oe") 'ø Chr(248) str = Replace(str, "Ø", "Oe") 'Ø Chr(216) str = Replace(str, "å", "aa") 'å Chr(229) str = Replace(str, "Å", "Aa") 'Å Chr(197) 'Remove all chars not allowed allowed="abcdefghijklmnopqrstuvwxyz0123456789_-" tmp="" for i = 1 to len(str) if instr(1,allowed,mid(str,i,1),1)>0 then tmp=tmp & mid(str,i,1) end if next RemoveIllegals = LCase(tmp) end function
function bliver kaldt således: strgallery = RemoveIllegals(Request.Form("gallery"))
Det er fordi du ikke har store bogstaver med i din allowed-streng. Da du alligevel konverterer til lowercase i slutningen, kan du ligeså godt gør det i starten (og derved spare nogle replace-sætninger :)).
Function RemoveIllegals(str) 'First convert Danish chars and space str = LCase(str) str = Replace(str, " ", "_") 'Space str = Replace(str, "æ", "ae") 'æ Chr(230) str = Replace(str, "ø", "oe") 'ø Chr(248) str = Replace(str, "å", "aa") 'å Chr(229) 'Remove all chars not allowed allowed="abcdefghijklmnopqrstuvwxyz0123456789_-" tmp="" for i = 1 to len(str) if instr(1,allowed,mid(str,i,1),1)>0 then tmp=tmp & mid(str,i,1) end if next RemoveIllegals = tmp end function
Smart at lave lowercase først. Dog er det ikke helt rigtigt, jeg får stadig resultatet "grden_p_landet_-_ved_sen" Fejlen ligger decideret i de (nu 3 :p ) sætninger her: str = Replace(str, "æ", "ae") 'æ Chr(230) str = Replace(str, "ø", "oe") 'ø Chr(248) str = Replace(str, "å", "aa") 'å Chr(229)
Det er som om at "æ" "ø" "å" ikke bliver "set" i strengen Forstår det ikke da jeg har set det skrevet på den måde mange gange
mit lignende meta-tag ser sån her ud: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> men det gjorde ingen forskel med: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
OK, måske det er på serveren der er noget galt med encoding så.
Prøv at sætte
Session.LCID = 1030
og
codepage=1252
codepage skal sætte i pagedirective (altså der hvor du også definerer hvilket sprog du benytter på siden, f.eks. <% @language="vbscript" codepage=1252 %>)
Doh ... havde sat dit meta-tag ind et forkert sted men det var løsningen ... det havde jeg sgu ikke gættet :) Min asp side indeholdt ingen html, kun ren asp. Derfor var meta-tagget ikke med Jeg siger tusind tak for hjælpen
problemet vender dog tilbage når jeg ændrer tagget til: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> har du nogen forklaring på det?
Jeg vil tro det er fordi din asp-fil ikke er gemt som UTF-8, men som iso-8859-1 og når den tekst (æ, ø og å i dit tilfælde) som brugeren indtaster (der jo er UTF-8) kommer over på serveren og bliver replaced med en iso-8859-1 udgaverne af æ, ø og å, så går der kage i systemet, når det kommer tilbage til klienten (der stadig fortolker teksten som UTF-8)...
Det er bare en teori, så den er lidt usikker :)
Du kan jo evt. prøve at sætte codepage=65001 på asp-siden (selvom jeg dog mener at du så skal gemme din sourcefil som utf-8 for at det kommer til at fungere, men igen lidt usikker - encoding er lidt forvirrende :)...)
puha ... lidt forvirrende? :) er ikke selv særligt (for ikke at sige slet ikke) hård til encoding. Men hvad vil du så anbefale? at udskifte alle sider med <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> Hvis mine sider alligevel er gemt som iso-8859-1 er det vel det mest rigtige at gøre
Hmmm... det kommer an på hvad din ambitioner med sitet er. Hvis det kun skal køre for et dansk (kan ikke huske om det gælder hele norden), så er iso-8859-1 i princippet godt nok, men hvis du skal have dækket alle mulige sprog ind, så er det helt klart utf-8 der skal bruges... såeh, det er udgangspunktet :)
Ah ok ... Tjah et spørgsmål om holdning vel fint fint så fik jeg det afklaret ... nogenlunde i hvertfald :) tror hellere jeg må holde for i dag endnu engang tusind tak for hjælpen
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.