Avatar billede esset Nybegynder
24. juni 2004 - 14:22 Der er 14 kommentarer og
1 løsning

HTML Encoding

Hvordan får jeg encoded en tekst streng til html venlig syntaks (med %20 osv.)
Avatar billede esset Nybegynder
24. juni 2004 - 16:07 #1
sorry - mener selvfølgelig HTTP encoding
Avatar billede sjh Nybegynder
24. juni 2004 - 22:06 #2
Er det ikke URLEncode() eller URLDecode() du mener?


Public Function URLDecode(ByVal strUrl As String) As String
Dim ci As Integer
Dim strOut As String
Dim strOne As String
  While Not (ci >= Len(strUrl))
    ci = ci + 1
    strOne = Mid$(strUrl, ci, 1)
    Select Case strOne
          Case "+"
            strOut = strOut & " "
          Case "%"
            ci = ci + 1
            strOut = strOut & _
            Chr$(CLng("&H" & Mid$(strUrl, ci, 2)))
            ci = ci + 1
          Case Else
            strOut = strOut & strOne
    End Select
  Wend
URLDecode = strOut
End Function

Public Function URLEncode(ByVal bstrIn As String) As String
Dim i      As Long
Dim lngHex As Long
Dim strHex As String
Dim strOne As String
  For i = Len(bstrIn) To 1 Step -1
    strOne = Mid$(bstrIn, i, 1)
    Select Case Asc(UCase$(strOne))
          Case vbKey0 To vbKey9, vbKeyA To vbKeyZ
          Case 32
            Mid$(bstrIn, i, 1) = "+"
          Case Else
            lngHex = Asc(strOne)
            If lngHex And &HF0& Then
              strHex = ("%" & Hex$(lngHex))
                Else
              strHex = ("%0" & Hex$(lngHex))
            End If
            bstrIn = Left$(bstrIn, i - 1) & strHex & _
                    Mid$(bstrIn, i + 1)
    End Select
  Next i
URLEncode = bstrIn
End Function
Avatar billede sjh Nybegynder
24. juni 2004 - 22:10 #3
Ellers er den her..

Public Function HTMLEncode(ByVal bstrIn As String) As String
Dim i As Long
Dim Ascii As Long
  i = InStr(bstrIn, "&")
  If i Then bstrIn = Replace(bstrIn, "&", "&", i)
  i = InStr(bstrIn, """")
  If i Then bstrIn = Replace(bstrIn, """", """, i)
  i = InStr(bstrIn, "<")
  If i Then bstrIn = Replace(bstrIn, "<", "&lt;", i)
  i = InStr(bstrIn, ">")
  If i Then bstrIn = Replace(bstrIn, ">", "&gt;", i)
  For i = Len(bstrIn) To 1 Step -1
    Ascii = Asc(Mid$(bstrIn, i, 1))
    If Ascii >= 160 Then
      bstrIn = Left$(bstrIn, i - 1) & "&#" & CStr(Ascii) & ";" & Mid$(bstrIn, i + 1)
    End If
  Next i
HTMLEncode = bstrIn
End Function
Avatar billede sjh Nybegynder
02. juli 2004 - 10:37 #4
Sker der noget her...
Avatar billede esset Nybegynder
13. juli 2004 - 11:20 #5
Undskyld ventetiden. Det var denne løsning jeg var ude efter:

Function escapeString(aStr As String) As String
    Dim validChars As String
    Dim i As Integer
   
    validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-%@*/_."
   
    aStr = replaceSubstring(aStr, "%", "%" + Hex$(Asc("%")))
   
    i = 1
    While i <= Len(aStr)
        If InStr(validChars, Mid$(aStr, i, 1)) = 0 Then
            If Asc(Mid$(aStr, i, 1)) < 32 Then
                aStr = Mid$(aStr, 1, i - 1) + Mid$(aStr, i + 1, Len(aStr) - i)
            Else
                aStr = Mid$(aStr, 1, i - 1) + "%" + Hex$(Asc(Mid$(aStr, i, 1))) + Mid$(aStr, i + 1, Len(aStr) - i)
                i = i + 3
            End If
        Else
            i = i + 1
        End If
    Wend
   
    escapeString = aStr
End Function

Function replaceSubstring(source As String, fromStr As String, toStr As String) As String
    Dim i As Integer
    Dim temp As String
   
    temp = source
    If fromStr <> "" Then
        If fromStr <> toStr Then
            i = InStr(temp, fromStr)
            While i <> 0
                If toStr <> "" Then
                    temp = Left$(temp, i - 1) + toStr + Right$(temp, Len(temp) - i - Len(fromStr) + 1)
                Else
                    temp = Left$(temp, i - 1) + Right$(temp, Len(temp) - i - Len(fromStr) + 1)
                End If
               
                i = InStr(i + Len(toStr), temp, fromStr)
            Wend
        End If
    End If
    replaceSubstring = temp
End Function

Men da jeg har formuleret mig temmelige ringe ;o) så får du dine point alligevel.
Avatar billede jmc Nybegynder
08. november 2004 - 11:29 #6
Hvorfor virker dette ikke?

<form name="form1" method="post" action="decode.asp">
  <p>
    <textarea name="indput" wrap="VIRTUAL" id="indput"></textarea>
    <input type="submit" name="Submit" value="overs&aelig;t">
  </p>
  <p>
    <textarea name="textarea2" wrap="VIRTUAL"><%response.Write(escapeString(request.form("indput")))%>
</textarea>
  </p>
</form>

<%
Function escapeString(aStr As String) As String
    Dim validChars As String
    Dim i As Integer
   
    validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-%@*/_."
   
    aStr = replaceSubstring(aStr, "%", "%" + Hex$(Asc("%")))
   
    i = 1
    While i <= Len(aStr)
        If InStr(validChars, Mid$(aStr, i, 1)) = 0 Then
            If Asc(Mid$(aStr, i, 1)) < 32 Then
                aStr = Mid$(aStr, 1, i - 1) + Mid$(aStr, i + 1, Len(aStr) - i)
            Else
                aStr = Mid$(aStr, 1, i - 1) + "%" + Hex$(Asc(Mid$(aStr, i, 1))) + Mid$(aStr, i + 1, Len(aStr) - i)
                i = i + 3
            End If
        Else
            i = i + 1
        End If
    Wend
   
    escapeString = aStr
End Function

Function replaceSubstring(source As String, fromStr As String, toStr As String) As String
    Dim i As Integer
    Dim temp As String
   
    temp = source
    If fromStr <> "" Then
        If fromStr <> toStr Then
            i = InStr(temp, fromStr)
            While i <> 0
                If toStr <> "" Then
                    temp = Left$(temp, i - 1) + toStr + Right$(temp, Len(temp) - i - Len(fromStr) + 1)
                Else
                    temp = Left$(temp, i - 1) + Right$(temp, Len(temp) - i - Len(fromStr) + 1)
                End If
               
                i = InStr(i + Len(toStr), temp, fromStr)
            Wend
        End If
    End If
    replaceSubstring = temp
End Function
%>
Avatar billede jmc Nybegynder
08. november 2004 - 11:31 #7
Den siger:
Microsoft VBScript compilation error '800a03ee'

Expected ')'

/tool/decode.asp, line 12

Function escapeString(aStr As String) As String
---------------------------^
Avatar billede sjh Nybegynder
08. november 2004 - 11:32 #8
det er nok "As Stirig" det virker ikke i ASP
Avatar billede sjh Nybegynder
08. november 2004 - 11:34 #9
du skal nok fjerne:
As Integer
As Stirig
Avatar billede sjh Nybegynder
08. november 2004 - 11:37 #10
men nu det er ASP kan du så ikke bruge:

<%
  response.write(Server.URLEncode("din tekst her"))
%>
Avatar billede sjh Nybegynder
08. november 2004 - 11:38 #11
eller var det..
<%
  response.write(Server.HTMLEncode("<code></code>"))
%>
Avatar billede jmc Nybegynder
08. november 2004 - 12:14 #12
ja, og flere ting jeg opgiver det snart...
Microsoft VBScript compilation error '800a0408'

Invalid character

/tool/decode.asp, line 18

aStr = replaceSubstring(aStr, "%", "%" + Hex$(Asc("%")))
--------------------------------------------^
Avatar billede sjh Nybegynder
08. november 2004 - 12:42 #13
Kan du ikke bruge dem her..

<%
  response.write(Server.URLEncode("din tekst her"))
  response.write(Server.HTMLEncode("<code></code>"))
%>

Prøv dem på en ny asp-side
Avatar billede jmc Nybegynder
08. november 2004 - 15:28 #14
jeg vil decode!
er der ikke nogle som kender en online service som kan gøre dette (en form et sted!)?
Avatar billede sjh Nybegynder
08. november 2004 - 16:54 #15
øhh havd mener du så med at decode?? er det så man ikke kan læse det eller hvad??
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