Jump to content

Url Encoder / Decoder functions


DreamVB
 Share

Recommended Posts

hi here are two little functions I made to encode and decode web URL strings, any chars that are not valid are converted to hexadecimal and vice versa, Well I wrapped it up with a little GUI for you to test hope it maybe useful.

#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Local Const $AppTitle = "URL Tools"

Func DecodeUrl($src)
    Local $i
    Local $ch
    Local $buff

    ;Init Counter
    $i = 1

    While ($i <= StringLen($src))
        $ch = StringMid($src, $i, 1)
        ;Correct spaces
        If ($ch = "+") Then
            $ch = " "
        EndIf
        ;Decode any hex values
        If ($ch = "%") Then
            $ch = Chr(Dec(StringMid($src, $i + 1, 2)))
            $i += 2
        EndIf
        ;Build buffer
        $buff &= $ch
        ;Inc Counter
        $i += 1
    WEnd

    Return $buff
EndFunc   ;==>DecodeUrl

Func EncodeUrl($src)
    Local $i
    Local $ch
    Local $NewChr
    Local $buff

    ;Init Counter
    $i = 1

    While ($i <= StringLen($src))
        ;Get byte code from string
        $ch = Asc(StringMid($src, $i, 1))

        ;Look for what bytes we have
        Switch $ch
            ;Looks ok here
            Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
                $buff &= Chr($ch)
                ;Space found
            Case 32
                $buff &= "+"
            Case Else
                ;Convert $ch to hexidecimal
                $buff &= "%" & Hex($ch, 2)
        EndSwitch
        ;INC Counter
        $i += 1
    WEnd

    Return $buff
EndFunc   ;==>EncodeUrl

Func ShowForm()
    Local $Data
    ;Create form controls
    $frmmain = GUICreate($AppTitle, 509, 265, 314, 360)
    $lblTitle1 = GUICtrlCreateLabel("URL Decoder/Encoder", 8, 7, 115, 17)
    $cmdEncode = GUICtrlCreateButton("&Encode", 423, 26, 75, 25)
    $cmdExit = GUICtrlCreateButton("E&xit", 423, 132, 75, 25)
    $txtData = GUICtrlCreateEdit("Testing + 12 http://www.google.com", 8, 26, 409, 193)
    $cmdDecode = GUICtrlCreateButton("&Decode", 423, 57, 75, 25)
    $cmdAbout = GUICtrlCreateButton("&About", 423, 100, 75, 25)
    $lblDesc = GUICtrlCreateLabel("Ben's URL Encoder/Decoder v1.0", 90, 228, 243, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x000080)

    ;Show form
    GUISetState(@SW_SHOW)

    ;Form Messages loop
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $cmdExit
                Exit
            Case $cmdEncode
                ;Get text data
                $Data = _GUICtrlEdit_GetText($txtData)
                ;Check length
                If StringLen($Data) > 0 Then
                    ;Place text into decoded text box.
                    _GUICtrlEdit_SetText($txtData, EncodeUrl($Data))
                EndIf
            Case $cmdDecode
                ;Get text data
                $Data = _GUICtrlEdit_GetText($txtData)
                ;Check length
                If StringLen($Data) > 0 Then
                    ;Place text into decoded text box.
                    _GUICtrlEdit_SetText($txtData, DecodeUrl($Data))
                EndIf
            Case $cmdAbout
                MsgBox(64, "About", $AppTitle & " v1.0" & @CRLF & @TAB & "By Ben Jones")
        EndSwitch
    WEnd
EndFunc   ;==>ShowForm

;Load main form
ShowForm()

On Error Resume Pulling Hair Out.

Link to comment
Share on other sites

  • 3 months later...

Thanks for this piece of code, it was useful to me :)
 
 
old post:
Is the code only broken for me? I got a --URL::5e1cd925cceeb0b8f1f0f4b9c11e2e45-- or similar before each line that isn't a comment, what's up with that?
 
Edit: As soon as I posted, it vanished...
 
Edit 2: So I wasn't crazy, it's the same on this thread: '?do=embed' frameborder='0' data-embedContent>>
 
Edit 3: Okay, now I got it... It's the highlighting: ?hl=%2Burl+%2Bdecode'>?hl=%2Burl My bad.

Edited by Miranda
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...