Avatar billede lightbrain Nybegynder
23. juni 2002 - 22:03 Der er 27 kommentarer og
3 løsninger

Specialtegn

Hej

Jeg har en submit-side, hvor der skal indtastes en titel. I 99% af tilfældene vil der ikke opstå problemer, fordi brugeren indtaster normale tegn, MEN i 1% af tilfællene vil brugeren indtaste f.eks. - Den "Vilde" mand - eller Den 'søde' kvinde - osv. Disse specialtegn, plus mange andre, smadrer min hjemmeside, fordi browseren fejlagtigt læser dem som kode.

Derfor, hvordan omskrives følgende ASP-kode, således at omtalte problem undgåes under indlæsning (fra databasen) af gemte titler?

response.write "gruppe[1][" & i & "]=new artikel (""" & rs("artikelnr") & """,""" & rs("titel") & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """);"
Avatar billede hells Nybegynder
23. juni 2002 - 22:09 #1
f. eks.:
titel = rs("titel")
titel = Replace(titel,"<","&lt;")

response.write "gruppe[1][" & i & "]=new artikel (""" & rs("artikelnr") & """,""" & titel & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """);"
Avatar billede musicchart.dk Nybegynder
23. juni 2002 - 23:24 #2
strTekst = "gruppe[1][" & i & "]=new artikel (""" & rs("artikelnr") & """,""" & rs("titel") & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """);"

strTekst = server.HTMLencode(strTekst)
response.write strTekst
Avatar billede musicchart.dk Nybegynder
23. juni 2002 - 23:29 #3
eller:
strART = server.HTMLEncode(rs("artikelnr"))
strTITEL = server.HTMLEncode(rs("titel"))
strFORFATTER = server.HTMLEncode(rs("forfatter"))
strBESKRIVELSE = server.HTMLEncode(rs("beskrivelse"))
strFILNAVN = server.HTMLEncode(rs("filnavn"))
strEMNENR = server.HTMLEncode(rs("emnenr"))
strNIVEAU = server.HTMLEncode(rs("niveau"))

response.write "gruppe[1][" & i & "]=new artikel (""" & strART & """,""" & strTITEL & """,""" & strFORFATTER & """, """ & strBESKRIVELSE & """, """ & strFILNAVN & """, """ & strEMNENR & """, """ & strNIVEAU & """);"
Avatar billede lightbrain Nybegynder
24. juni 2002 - 18:10 #4
Hvorfor viser den - &quot - i stedet for "-tegnet, når nu at "-tegnet er korrekt indlæst i arrayet, som I ovenfor har beskrevet?
Avatar billede lightbrain Nybegynder
24. juni 2002 - 18:17 #5
F.eks. bliver - Den "Vilde" mand - til - Den &quotVilde&quot mand
Avatar billede lightbrain Nybegynder
26. juni 2002 - 20:21 #6
Er det så svært at svare på ;-)
Avatar billede jakoba Nybegynder
26. juni 2002 - 20:53 #7
har asp ikke en replace funktion  der kan tage alle " i en streng og lave dem til \"  det vil være mere passende her hvor strengen skal gemmes i et array.
Avatar billede jakoba Nybegynder
26. juni 2002 - 20:57 #8
Næe, det var galt, det er urlencode der skal til.
den funktion der laver sære tegn til  %NN  dekvenser

den kan javascript konvertere tilbage igen med funktionen unescape

response.write "gruppe[1][" & i & "]=new artikel ( unescape( """ & rs("artikelnr") & """,""" & rs("titel") & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """ ) );"
Avatar billede lightbrain Nybegynder
26. juni 2002 - 21:16 #9
Hymmmm :-)

1) Skriver jeg følgende, får jeg "&quot" i stedet for for "-tegnet:

response.write "gruppe[1][" & i & "]=new artikel (""" & server.HTMLEncode(rs("artikelnr")) & """,""" & server.HTMLEncode(rs("titel")) & """,""" & server.HTMLEncode(rs("forfatter")) & """, """ & server.HTMLEncode(rs("beskrivelse")) & """, """ & server.HTMLEncode(rs("filnavn")) & """, """ & server.HTMLEncode(rs("emnenr")) & """, """ & server.HTMLEncode(rs("niveau")) & """);

2) Skriver jeg følgende, får jeg en tom array:

response.write "gruppe[1][" & i & "]=new artikel (unescape(""" & server.HTMLEncode(rs("artikelnr")) & """,""" & server.HTMLEncode(rs("titel")) & """,""" & server.HTMLEncode(rs("forfatter")) & """, """ & server.HTMLEncode(rs("beskrivelse")) & """, """ & server.HTMLEncode(rs("filnavn")) & """, """ & server.HTMLEncode(rs("emnenr")) & """, """ & server.HTMLEncode(rs("niveau")) & """));

3) Skriver jeg følgende, får jeg en masse fejl-medelelser, fordi browseren fejlagtigt læser det som kode:

response.write "gruppe[1][" & i & "]=new artikel ( unescape( """ & rs("artikelnr") & """,""" & rs("titel") & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """ ) );"
Avatar billede jakoba Nybegynder
26. juni 2002 - 21:27 #10
Det er en anden funktion end HTMLencode der skal bruges, derudover skulle 2) være korrekt.
Jeg kender desværre ikke nok asp til at vide hvad den hedder. jeg ville gætte på  URLencode  men det er nok galt.
men mon ikke hells eller musicchart kender den.
Det er den funktion der laver "to ord" om til "to%20ord"
Avatar billede hells Nybegynder
27. juni 2002 - 20:31 #11
Du har ganske ret jakoba. Den hedder noget med URLencode, og den bruges sådan:
Server.URLEncode(rs("artikelnr"))
Prøv med den istedet for HTMLEncode
Avatar billede lightbrain Nybegynder
29. juni 2002 - 20:52 #12
Vi kommer sikkert tættere på målet, men vi er der ikke helt endnu, for skriver jeg følgende, får jeg - Den %22Vilde%22 Mand - i stedet for - Den "Vilde" Mand.

response.write "gruppe[1][" & i & "]=new artikel (""" & server.URLEncode(rs("artikelnr")) & """,""" & server.URLEncode(rs("titel")) & """,""" & server.URLEncode(rs("forfatter")) & """, """ & server.URLEncode(rs("beskrivelse")) & """, """ & server.URLEncode(rs("filnavn")) & """, """ & server.URLEncode(rs("emnenr")) & """, """ & server.URLEncode(rs("niveau")) & """);"
Avatar billede hells Nybegynder
29. juni 2002 - 20:55 #13
Prøv med:
response.write "gruppe[1][" & i & "]=new artikel (unescape(""" & server.URLEncode(rs("artikelnr")) & """,""" & server.URLEncode(rs("titel")) & """,""" & server.URLEncode(rs("forfatter")) & """, """ & server.URLEncode(rs("beskrivelse")) & """, """ & server.URLEncode(rs("filnavn")) & """, """ & server.URLEncode(rs("emnenr")) & """, """ & server.URLEncode(rs("niveau")) & """));
Avatar billede lightbrain Nybegynder
30. juni 2002 - 14:04 #14
Hymmmm

Følgende giver også en tom array - lige meget om de objekter, der skal indlæses, indeholder specialtegn eller ej.

response.write "gruppe[1][" & i & "]=new artikel (unescape(""" & server.URLEncode(rs("artikelnr")) & """,""" & server.URLEncode(rs("titel")) & """,""" & server.URLEncode(rs("forfatter")) & """, """ & server.URLEncode(rs("beskrivelse")) & """, """ & server.URLEncode(rs("filnavn")) & """, """ & server.URLEncode(rs("emnenr")) & """, """ & server.URLEncode(rs("niveau")) & """));"
Avatar billede lightbrain Nybegynder
30. juni 2002 - 14:08 #15
Det er lige gået op for mig, at det er "unescape", der gør, at intet indlæses = tom array.
Avatar billede jakoba Nybegynder
30. juni 2002 - 14:08 #16
hvad kommer der til at stå i den fil .asp genererer og sender til browseren?
Avatar billede lightbrain Nybegynder
30. juni 2002 - 14:51 #17
Der kommer intet til at stå - menuerne (dropdown-boxe), hvor objekter bliver indlæst, er tomme. De indeholder ikke engang punkter, som er uden tekst og værdi. Et check på arrayen, hvorfra objekter bliver indlæst, vise at det, altså arrayet, er tomt for objekter.

(Dette var ikke tilfældet ved de andre ovenfor omtalte tilgang, men de skabte i stedet tegn såsom: &quot og %22)
Avatar billede lightbrain Nybegynder
30. juni 2002 - 14:56 #18
>>jakoba
Hvis du har tid, så tag lige at kigge på denne her - den er sikkert meget nem for dig: http://www.eksperten.dk/spm/230672
Avatar billede lightbrain Nybegynder
30. juni 2002 - 20:28 #19
Jeg sidder stadig fast ;-)

"Unescape" gør, at intet indlæses i arrayet - hvorfor?

response.write "gruppe[1][" & i & "]=new artikel (unescape(""" & server.URLEncode(rs("artikelnr")) & """,""" & server.URLEncode(rs("titel")) & """,""" & server.URLEncode(rs("forfatter")) & """, """ & server.URLEncode(rs("beskrivelse")) & """, """ & server.URLEncode(rs("filnavn")) & """, """ & server.URLEncode(rs("emnenr")) & """, """ & server.URLEncode(rs("niveau")) & """));"
Avatar billede jakoba Nybegynder
30. juni 2002 - 20:50 #20
hvad kommer der til at stå i den fil .asp genererer og sender til browseren?
Avatar billede jakoba Nybegynder
30. juni 2002 - 20:57 #21
jeg tror:

response.write "gruppe[1][" & i & "]=new artikel (unescape(""" _
& server.URLEncode( rs("artikelnr") & """,""" & rs("titel") & """,""" & rs("forfatter") & """, """ _
& rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau")) & """));"

spørgsmålet går på hvad der præcis står i kildekoden det sted. ikke hvad browseren viser frem.
Avatar billede lightbrain Nybegynder
30. juni 2002 - 21:03 #22
Ok, nu er jeg med. HTML-koden er følgende, hvor man tydelig kan se, at "unescape" er malplaceret/bliver mistolket:

<script>gruppe[1][1]=new artikel (unescape("194","7757577575","", "", "", "3", "1"));gruppe[2][1]=new sektion("1","Sektion 1","1");gruppe[2][2]=new sektion("2","Sektion 2","2");gruppe[2][3]=new sektion("3","Sektion 3","3");gruppe[2][4]=new sektion("4","Sektion 4","4");gruppe[3][1]=new emne("3","Emne 1", "1", "","","1");gruppe[3][2]=new emne("4","Emne 2", "2", "","","1");gruppe[3][3]=new emne("5","Emne 3", "3", "","","1");gruppe[3][4]=new emne("7","Emne 3½", "3", "","","2");</script>

PS. Jeg vil nu prøve din sidste indsendte kode.
Avatar billede lightbrain Nybegynder
30. juni 2002 - 21:06 #23
>PS. Jeg vil nu prøve din sidste indsendte kode.
Glemt det - min fejl - koden er jo den samme, hvilket jeg ikke lige havde set.
Avatar billede jakoba Nybegynder
30. juni 2002 - 21:47 #24
Den virkede ikke vel. nu nu jeg fatter problemet tror jeg denne gør:

response.write "gruppe[1][" & i & "]=new artikel (" & rs("artikelnr") & "," & "unescape(""" & server.URLEncode( rs("titel") ) &""")" & "," & "unescape(""" & server.URLEncode( rs("forfatter") ) &""")" & ", " & "unescape(""" & server.URLEncode( rs("beskrivelse") ) &""")" & ", " & "unescape(""" & server.URLEncode( rs("filnavn") ) & &""")" ", " & rs("emnenr") & ", " & rs("niveau") & ");"
Avatar billede lightbrain Nybegynder
30. juni 2002 - 22:01 #25
Yes, yes, yes! Det virker! Tryk lige svar, så du kan få nogle points.

Kast dig også gerne over denne problemstilling: http://www.eksperten.dk/spm/230819
Avatar billede jakoba Nybegynder
30. juni 2002 - 22:08 #26
det må vel være en deler med hells.
Avatar billede lightbrain Nybegynder
01. juli 2002 - 19:21 #27
Der fik jeg trykket 'accept' for hurtigt, fordi alle mellemrum bliver til +.

Jeg gik en tur = Jeg+gik+en+tur

Hvorfor søren gør den det?
Avatar billede jakoba Nybegynder
01. juli 2002 - 20:19 #28
Det er fordi server.URLEncode ikke er 100% den korrekt funktion alligevel.
Det er et alternativet format for urlencoding lavet fordi + jo kun fylder eet bogstav, mend %20 fylder 3bogstaver, især IE roder noget rundt i det. (det er som regel også der Jubii søgninger kvajer sig når de ikke kan forstå søgning på mere end et ord).

Kik i MS'd dokumentationen omkring URLEncode om ikke der enten finden en anden funktion der gør det korrekt, eller også en systemparameter et sted du kan stille så den encoder på den 'rigtige' måde.

mvh JakobA
Avatar billede lightbrain Nybegynder
01. juli 2002 - 20:40 #29
Hvis det skulle have din interesse, hvad ASPerterne svarer på ovenstående problem, så er referencen: http://www.eksperten.dk/spm/231198
Avatar billede lightbrain Nybegynder
02. juli 2002 - 22:28 #30
>>hells
Jeg har brug for din hjælp: http://exp.dk/spm/231671
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