Avatar billede gordi Nybegynder
29. oktober 2005 - 01:39 Der 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"))
Avatar billede softspot Forsker
29. oktober 2005 - 01:45 #1
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
Avatar billede plx Nybegynder
29. oktober 2005 - 01:48 #2
prøv med en

Response.write Request.Form("gallery")
og se hvordan de danske bogstaver afleveres

softspot> instr er sat til case-insensitiv
Avatar billede softspot Forsker
29. oktober 2005 - 01:53 #3
Det er den da også! :)

Så har det nok noget med encoding at gøre...
Avatar billede gordi Nybegynder
29. oktober 2005 - 01:53 #4
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
Avatar billede softspot Forsker
29. oktober 2005 - 01:54 #5
Prøv at indsætte et meta-tag som angiver encoding på siden (skal ligge i head-sektionen):

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Avatar billede gordi Nybegynder
29. oktober 2005 - 01:55 #6
Response.Write(Request.Form("gallery")) ser således ud:
"Gården (På landet) - ved søen"
Avatar billede gordi Nybegynder
29. oktober 2005 - 01:57 #7
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">
Avatar billede softspot Forsker
29. oktober 2005 - 01:58 #8
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 %>)
Avatar billede softspot Forsker
29. oktober 2005 - 01:59 #9
Nej, hvis du bruger utf-8, så lad engelig være med at ændre dette...
Avatar billede plx Nybegynder
29. oktober 2005 - 02:01 #10
en hurtig tur på google siger dette sammen med UTF8

Session.Codepage = 65001
Avatar billede gordi Nybegynder
29. oktober 2005 - 02:01 #11
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
Avatar billede softspot Forsker
29. oktober 2005 - 02:02 #12
Velbekomme :)
Avatar billede gordi Nybegynder
29. oktober 2005 - 02:06 #13
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?
Avatar billede softspot Forsker
29. oktober 2005 - 02:13 #14
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 :)...)
Avatar billede softspot Forsker
29. oktober 2005 - 02:20 #15
Tak for point i øvrigt :)
Avatar billede gordi Nybegynder
29. oktober 2005 - 02:22 #16
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
Avatar billede gordi Nybegynder
29. oktober 2005 - 02:23 #17
det var så lidt :) velfortjent
Avatar billede softspot Forsker
29. oktober 2005 - 02:26 #18
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 :)
Avatar billede gordi Nybegynder
29. oktober 2005 - 02:32 #19
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
Avatar billede softspot Forsker
29. oktober 2005 - 02:33 #20
Det var så lidt :)
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