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") & """);"
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
f. eks.: titel = rs("titel") titel = Replace(titel,"<","<") response.write "gruppe[1][" & i & "]=new artikel (""" & rs("artikelnr") & """,""" & titel & """,""" & rs("forfatter") & """, """ & rs("beskrivelse") & """, """ & rs("filnavn") & """, """ & rs("emnenr") & """, """ & rs("niveau") & """);"
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
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 & """);"
Hvorfor viser den - " - i stedet for "-tegnet, når nu at "-tegnet er korrekt indlæst i arrayet, som I ovenfor har beskrevet?
F.eks. bliver - Den "Vilde" mand - til - Den "Vilde" mand
Er det så svært at svare på ;-)
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.
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") & """ ) );"
Hymmmm :-) 1) Skriver jeg følgende, får jeg """ 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") & """ ) );"
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"
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
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")) & """);"
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")) & """));
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")) & """));"
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.
30. juni 2002 - 14:08
#16
hvad kommer der til at stå i den fil .asp genererer og sender til browseren?
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: " og %22)
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")) & """));"
30. juni 2002 - 20:50
#20
hvad kommer der til at stå i den fil .asp genererer og sender til browseren?
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.
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.
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.
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") & ");"
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
30. juni 2002 - 22:08
#26
det må vel være en deler med hells.
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?
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
Kurser inden for grundlæggende programmering