Avatar billede para7 Nybegynder
08. maj 2003 - 11:30 Der er 14 kommentarer og
1 løsning

Konvertere %20 + osv til normale tegn

Er der ikke en form for dekodning eller det modsatte af HTMLEncode?

Jeg har en streng med fx Mandag+morgen%21, som gerne skulle indskrives i db som Mandag morgen! for at jeg kan hente den sådan.
Avatar billede md_craig Nybegynder
08. maj 2003 - 11:35 #1
??? er ikke lige med på hvad det er du mener

er det fordi du vil bruge Mandag morgen! til at udhente et bestemt felt i din tabel ???

eller hvad er det du vil
Avatar billede mortrr Praktikant
08. maj 2003 - 11:39 #2
Der må jo være en eller anden grund til at det er blevet urlencoded.
Når du laver en request("blabla") bliver det automatisk decodet, så du må på en eller anden måde selv have gjort det.
Avatar billede para7 Nybegynder
08. maj 2003 - 11:42 #3
Tak indtil nu. Ser lige nærmere på det og vender tilbage..
Avatar billede para7 Nybegynder
08. maj 2003 - 11:56 #4
Jeg henter en streng fra db som denne med bookingtider:

09:00-09:15¤09:15-09:30¤09:30-09:45¤09:45-10:00¤10:00-10:15¤10:15-10:30¤10:30-10:45¤10:45-11:00¤11:00-11:15¤11:15-11:30¤11:30-11:45¤

Dernæst for at vise den bearbejder jeg den:

            reqForm0 = request.form
            arrReqForm = split(reqForm0,"&")
            for each reqElement in arrReqForm
                    if instr(reqElement,"BookingtidDelA") then
                        TidTaeller = TidTaeller+1
                        reqFormX = reqFormX & mid(reqElement,instr(reqElement,"=")+1) & ":"
                    end if
                    if instr(reqElement,"BookingtidDelB") then
                        reqFormX = reqFormX & mid(reqElement,instr(reqElement,"=")+1) & "-"
                    end if
                    if instr(reqElement,"BookingtidDelC") then
                        reqFormX = reqFormX & mid(reqElement,instr(reqElement,"=")+1) & ":"
                    end if
                    if instr(reqElement,"BookingtidDelD") then
                        reqFormX = reqFormX & mid(reqElement,instr(reqElement,"=")+1) & " "
                    end if
                    if instr(reqElement,"BookingtidBeskrivelseDel") then
                        reqFormX = reqFormX & mid(reqElement,instr(reqElement,"=")+1) & "¤"
                    end if
                reqFormBookingtiderListe = reqFormX
            next
       
Strengen vises så opdelt i en form, hvor jeg kan rette dataene. Og det virker udemærket. Videre fra formen indsættes i db og her er det at det som kommer fra BookingtidBeskrivelseDel bliver kodet med + og %21:

            strSQL = " update Lokaliteter set "
            strSQL = strSQL & " Ugedag" & request.querystring("vis") & "tider = '" & reqFormBookingtiderListe & "' "
            strSQL = strSQL & " where Lokalitet = 'Standard' "
            objConn.execute(strSQL)
Avatar billede mortrr Praktikant
08. maj 2003 - 12:00 #5
Så er det jo derfor.
Når du requester på den måde, bliver data IKKE dekodet.

Du kan eventuelt hente en funktion her:
http://www.pstruh.cz/tips/detpg_URLDecode.htm
Avatar billede para7 Nybegynder
08. maj 2003 - 12:03 #6
Tak mortrr >
Jeg fik ikke forklaret ordentligt. Jeg splitter først strengen fra db for at vise den i formopstilling.
Men nevermind, nu henter jeg lige den funktion og vender rilbage.
Avatar billede para7 Nybegynder
08. maj 2003 - 12:14 #7
Ser lovende ud. Hvordan bruger jeg den mon. Jeg får:
Typer stemmer ikke overens: 'URLDecode'
Ved at kalde funktionen som:
tider = '" & URLDecode(reqFormBookingtiderListe) & "' "
Avatar billede para7 Nybegynder
08. maj 2003 - 12:17 #8
URLDecode(ByVal What) Hvad er ByVal mon..
Avatar billede mortrr Praktikant
08. maj 2003 - 12:27 #9
ByVal betyder at værdien sendes over, og ikke en pointer til en evt variabl.

Hvorfor du får fejlen ved jeg ikke. Den giver ikke rigtigt mening.
Den kan dog komme ved stavefejl i funktionsnavne og lignende.
Avatar billede para7 Nybegynder
08. maj 2003 - 12:31 #10
Jeg har bl.a. testet med:
URLDecode(ByVal What)<%=URLDecode("test+test")%>
Samme fejlmeddelelse..
Avatar billede para7 Nybegynder
08. maj 2003 - 12:40 #11
Funktionen er her. Der må da være noget galt et sted? :

Function URLDecode(ByVal What)
'URL decode Function
'2001 Antonin Foller, PSTRUH Software, http://www.pstruh.cz
  Dim Pos, pPos

  'replace + To Space
  What = Replace(What, "+", " ")

  on error resume Next
  Dim Stream: Set Stream = CreateObject("ADODB.Stream")
  If err = 0 Then 'URLDecode using ADODB.Stream, If possible
    on error goto 0
    Stream.Type = 2 'String
    Stream.Open

    'replace all %XX To character
    Pos = InStr(1, What, "%")
    pPos = 1
    Do While Pos > 0
      Stream.WriteText Mid(What, pPos, Pos - pPos) + _
        Chr(CLng("&H" & Mid(What, Pos + 1, 2)))
      pPos = Pos + 3
      Pos = InStr(pPos, What, "%")
    Loop
    Stream.WriteText Mid(What, pPos)

    'Read the text stream
    Stream.Position = 0
    URLDecode = Stream.ReadText

    'Free resources
    Stream.Close
  Else 'URL decode using string concentation
    on error goto 0
    'UfUf, this is a little slow method.
    'Do Not use it For data length over 100k
    Pos = InStr(1, What, "%")
    Do While Pos>0
      What = Left(What, Pos-1) + _
        Chr(Clng("&H" & Mid(What, Pos+1, 2))) + _
        Mid(What, Pos+3)
      Pos = InStr(Pos+1, What, "%")
    Loop
    URLDecode = What
  End If
End Function
Avatar billede mortrr Praktikant
08. maj 2003 - 12:44 #12
Har lige kontrolleret den her, og det virker altså fint.

Er du nu sikker på at den er i koden?
Serverside?

Som sagt kan du få fejlen "Typer stemmer ikke overens" hvis du kalder en funktion eller array som ikke findes.
Avatar billede para7 Nybegynder
08. maj 2003 - 12:49 #13
Godt spørgsmå
Avatar billede para7 Nybegynder
08. maj 2003 - 12:51 #14
l. Jeg må jo huske at gemme mit dokument... =o)
Tak for nu.
Avatar billede para7 Nybegynder
08. maj 2003 - 12:52 #15
(altså det var en includefil, jeg ikke fik gemt)
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