Mar 06
Here's a simple function I wrote for URL Encoding a string in Visual Basic. I also have a list of URL Escape Codes available for download as well.
Download URLEncode.bas (June 01, 2005)
Public Function URLEncode(ByVal input_url As String) As String
Dim count As Long
Dim one_char As String
URLEncode = ""
For count = 1 To Len(input_url)
one_char = Mid$(input_url, count, 1)
If InStr("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", UCase$(one_char)) = 0 Then
one_char = "%" & Right$("0" & Hex$(Asc(one_char)), 2)
End If
URLEncode = URLEncode & one_char
Next
End Function
Which is a slight improvement over my first version here...
Public Function URLEncode(input_url As String) As String
input_url = Replace(input_url, Chr$(10), "%0A") 'LF
input_url = Replace(input_url, Chr$(13), "%0D") 'CR
input_url = Replace(input_url, Chr$(32), "%20") 'space
input_url = Replace(input_url, Chr$(33), "%21") '!
input_url = Replace(input_url, Chr$(34), "%22") '"
input_url = Replace(input_url, Chr$(35), "%23") '#
input_url = Replace(input_url, Chr$(36), "%24") '$
input_url = Replace(input_url, Chr$(37), "%25") '%
input_url = Replace(input_url, Chr$(38), "%26") '&
input_url = Replace(input_url, Chr$(39), "%27") ''
input_url = Replace(input_url, Chr$(40), "%28") '(
input_url = Replace(input_url, Chr$(41), "%29") ')
input_url = Replace(input_url, Chr$(42), "%2A") '*
input_url = Replace(input_url, Chr$(43), "%2B") '+
input_url = Replace(input_url, Chr$(44), "%2C") ',
input_url = Replace(input_url, Chr$(45), "%2D") '-
input_url = Replace(input_url, Chr$(46), "%2E") '.
input_url = Replace(input_url, Chr$(47), "%2F") '/
input_url = Replace(input_url, Chr$(58), "%3A") ':
input_url = Replace(input_url, Chr$(59), "%3B") ';
input_url = Replace(input_url, Chr$(60), "%3C") '<
input_url = Replace(input_url, Chr$(61), "%3D") '=
input_url = Replace(input_url, Chr$(62), "%3E") '>
input_url = Replace(input_url, Chr$(63), "%3F") '?
input_url = Replace(input_url, Chr$(64), "%40") '@
input_url = Replace(input_url, Chr$(91), "%5B") '[
input_url = Replace(input_url, Chr$(92), "%5C") '\
input_url = Replace(input_url, Chr$(93), "%5D") ']
input_url = Replace(input_url, Chr$(94), "%5E") '^
input_url = Replace(input_url, Chr$(95), "%5F") '_
input_url = Replace(input_url, Chr$(96), "%60") '`
input_url = Replace(input_url, Chr$(123), "%7B") '{
input_url = Replace(input_url, Chr$(124), "%7C") '|
input_url = Replace(input_url, Chr$(125), "%7D") '}
input_url = Replace(input_url, Chr$(126), "%7E") '~
input_url = Replace(input_url, Chr$(127), "%7F") 'DEL
input_url = Replace(input_url, Chr$(128), "%80")
input_url = Replace(input_url, Chr$(129), "%81")
input_url = Replace(input_url, Chr$(130), "%82")
input_url = Replace(input_url, Chr$(131), "%83")
input_url = Replace(input_url, Chr$(132), "%84")
input_url = Replace(input_url, Chr$(133), "%85")
input_url = Replace(input_url, Chr$(134), "%86")
input_url = Replace(input_url, Chr$(135), "%87")
input_url = Replace(input_url, Chr$(136), "%88")
input_url = Replace(input_url, Chr$(137), "%89")
input_url = Replace(input_url, Chr$(138), "%8A")
input_url = Replace(input_url, Chr$(139), "%8B")
input_url = Replace(input_url, Chr$(140), "%8C")
input_url = Replace(input_url, Chr$(141), "%8D")
input_url = Replace(input_url, Chr$(142), "%8E")
input_url = Replace(input_url, Chr$(143), "%8F")
input_url = Replace(input_url, Chr$(144), "%90")
input_url = Replace(input_url, Chr$(145), "%91")
input_url = Replace(input_url, Chr$(146), "%92")
input_url = Replace(input_url, Chr$(147), "%93")
input_url = Replace(input_url, Chr$(148), "%94")
input_url = Replace(input_url, Chr$(149), "%95")
input_url = Replace(input_url, Chr$(150), "%96")
input_url = Replace(input_url, Chr$(151), "%97")
input_url = Replace(input_url, Chr$(152), "%98")
input_url = Replace(input_url, Chr$(153), "%99")
input_url = Replace(input_url, Chr$(154), "%9A")
input_url = Replace(input_url, Chr$(155), "%9B")
input_url = Replace(input_url, Chr$(156), "%9C")
input_url = Replace(input_url, Chr$(157), "%9D")
input_url = Replace(input_url, Chr$(158), "%9E")
input_url = Replace(input_url, Chr$(159), "%9F")
input_url = Replace(input_url, Chr$(160), "%A0")
input_url = Replace(input_url, Chr$(161), "%A1")
input_url = Replace(input_url, Chr$(162), "%A2")
input_url = Replace(input_url, Chr$(163), "%A3")
input_url = Replace(input_url, Chr$(164), "%A4")
input_url = Replace(input_url, Chr$(165), "%A5")
input_url = Replace(input_url, Chr$(166), "%A6")
input_url = Replace(input_url, Chr$(167), "%A7")
input_url = Replace(input_url, Chr$(168), "%A8")
input_url = Replace(input_url, Chr$(169), "%A9")
input_url = Replace(input_url, Chr$(170), "%AA")
input_url = Replace(input_url, Chr$(171), "%AB")
input_url = Replace(input_url, Chr$(172), "%AC")
input_url = Replace(input_url, Chr$(173), "%AD")
input_url = Replace(input_url, Chr$(174), "%AE")
input_url = Replace(input_url, Chr$(175), "%AF")
input_url = Replace(input_url, Chr$(176), "%B0")
input_url = Replace(input_url, Chr$(177), "%B1")
input_url = Replace(input_url, Chr$(178), "%B2")
input_url = Replace(input_url, Chr$(179), "%B3")
input_url = Replace(input_url, Chr$(180), "%B4")
input_url = Replace(input_url, Chr$(181), "%B5")
input_url = Replace(input_url, Chr$(182), "%B6")
input_url = Replace(input_url, Chr$(183), "%B7")
input_url = Replace(input_url, Chr$(184), "%B8")
input_url = Replace(input_url, Chr$(185), "%B9")
input_url = Replace(input_url, Chr$(186), "%BA")
input_url = Replace(input_url, Chr$(187), "%BB")
input_url = Replace(input_url, Chr$(188), "%BC")
input_url = Replace(input_url, Chr$(189), "%BD")
input_url = Replace(input_url, Chr$(190), "%BE")
input_url = Replace(input_url, Chr$(191), "%BF")
input_url = Replace(input_url, Chr$(192), "%C0")
input_url = Replace(input_url, Chr$(193), "%C1")
input_url = Replace(input_url, Chr$(194), "%C2")
input_url = Replace(input_url, Chr$(195), "%C3")
input_url = Replace(input_url, Chr$(196), "%C4")
input_url = Replace(input_url, Chr$(197), "%C5")
input_url = Replace(input_url, Chr$(198), "%C6")
input_url = Replace(input_url, Chr$(199), "%C7")
input_url = Replace(input_url, Chr$(200), "%C8")
input_url = Replace(input_url, Chr$(201), "%C9")
input_url = Replace(input_url, Chr$(202), "%CA")
input_url = Replace(input_url, Chr$(203), "%CB")
input_url = Replace(input_url, Chr$(204), "%CC")
input_url = Replace(input_url, Chr$(205), "%CD")
input_url = Replace(input_url, Chr$(206), "%CE")
input_url = Replace(input_url, Chr$(207), "%CF")
input_url = Replace(input_url, Chr$(208), "%D0")
input_url = Replace(input_url, Chr$(209), "%D1")
input_url = Replace(input_url, Chr$(210), "%D2")
input_url = Replace(input_url, Chr$(211), "%D3")
input_url = Replace(input_url, Chr$(212), "%D4")
input_url = Replace(input_url, Chr$(213), "%D5")
input_url = Replace(input_url, Chr$(214), "%D6")
input_url = Replace(input_url, Chr$(215), "%D7")
input_url = Replace(input_url, Chr$(216), "%D8")
input_url = Replace(input_url, Chr$(217), "%D9")
input_url = Replace(input_url, Chr$(218), "%DA")
input_url = Replace(input_url, Chr$(219), "%DB")
input_url = Replace(input_url, Chr$(220), "%DC")
input_url = Replace(input_url, Chr$(221), "%DD")
input_url = Replace(input_url, Chr$(222), "%DE")
input_url = Replace(input_url, Chr$(223), "%DF")
input_url = Replace(input_url, Chr$(224), "%E0")
input_url = Replace(input_url, Chr$(225), "%E1")
input_url = Replace(input_url, Chr$(226), "%E2")
input_url = Replace(input_url, Chr$(227), "%E3")
input_url = Replace(input_url, Chr$(228), "%E4")
input_url = Replace(input_url, Chr$(229), "%E5")
input_url = Replace(input_url, Chr$(230), "%E6")
input_url = Replace(input_url, Chr$(231), "%E7")
input_url = Replace(input_url, Chr$(232), "%E8")
input_url = Replace(input_url, Chr$(233), "%E9")
input_url = Replace(input_url, Chr$(234), "%EA")
input_url = Replace(input_url, Chr$(235), "%EB")
input_url = Replace(input_url, Chr$(236), "%EC")
input_url = Replace(input_url, Chr$(237), "%ED")
input_url = Replace(input_url, Chr$(238), "%EE")
input_url = Replace(input_url, Chr$(239), "%EF")
input_url = Replace(input_url, Chr$(240), "%F0")
input_url = Replace(input_url, Chr$(241), "%F1")
input_url = Replace(input_url, Chr$(242), "%F2")
input_url = Replace(input_url, Chr$(243), "%F3")
input_url = Replace(input_url, Chr$(244), "%F4")
input_url = Replace(input_url, Chr$(245), "%F5")
input_url = Replace(input_url, Chr$(246), "%F6")
input_url = Replace(input_url, Chr$(247), "%F7")
input_url = Replace(input_url, Chr$(248), "%F8")
input_url = Replace(input_url, Chr$(249), "%F9")
input_url = Replace(input_url, Chr$(250), "%FA")
input_url = Replace(input_url, Chr$(251), "%FB")
input_url = Replace(input_url, Chr$(252), "%FC")
input_url = Replace(input_url, Chr$(253), "%FD")
input_url = Replace(input_url, Chr$(254), "%FE")
input_url = Replace(input_url, Chr$(255), "%FF")
URLEncode = input_url
End Function
MSDN Links
UrlEscape Function Reference
UrlUnescape Function Reference
What happens to "http://" (and other) chars within the server address?
Url encoding should only be done in the subfolder, file and params.
ex: http://www.myserver.com/mydirectory/file1.htm?param1=test
in this case would result:
http%3A%2F%2Fwww.myserver.com%2Fmydirectory%2Fmyfile%2Ehtm%3Fparam1%3Dtest
However, this is good code for param/file/directory name encoding once you only encode the right places.
You can also do this with the UrlEscape function found in shlwapi.dll.