Las funciones para codificar y descodificar un URL implementadas en Visual Basic
Aplica tanto para VB6 como para .NET.
Código fuente que implementa las funciones URLENCODE y URLDECODE. Estas funciones son originarias de PHP pero en ocasiones es necesario implemntarlas en algún otro lenguaje. Aquí están en Visual Basic 2005.
Desde este código es relativamente fácil pasarlo a otros lenguajes como Visual Basic 6 o ASP.
Function URLEnc(ByVal textoAcodificar As String) As String Dim nocodificar As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.!~*'()" Dim codificado As String = "" Dim i As Integer Dim ch As String Dim charCode As String
For i = 1 To Len(textoAcodificar)
ch = Mid(textoAcodificar, i, 1) If ch = " " Then codificado &= "+" ElseIf InStr(nocodificar, ch) > 0 Then codificado &= ch Else charCode = Asc(ch)
If charCode > 255 Then '- Caracter Unicode. no puede ser codificado Se sustituye por "+" ' codificado &= "+" Else codificado &= "%" codificado &= Hex(charCode) End If End If Next i Return codificado End Function |
Function URLDec(ByVal codificado As String) As String Dim HEXCHARS As String = "0123456789ABCDEFabcdef" Dim textoAcodificar As String = "" Dim ValorAscii As Integer Dim i As Integer = 1 Do While i < Len(codificado) Dim ch As String = Mid(codificado, i, 1) If ch = "+" Then textoAcodificar &= " " i += 1 ElseIf ch = "%" Then If i < Len(codificado) - 2 AndAlso InStr(HEXCHARS, Mid(codificado, i + 1, 1)) > 0 AndAlso InStr(HEXCHARS, Mid(codificado, i + 2, 1)) > 0 Then ValorAscii = CLng("&h" & Mid(codificado, i + 1, 2)) textoAcodificar &= Chr(ValorAscii) i += 3 Else ' Bad escape combination ' textoAcodificar &= "%[ERROR]" i += 1 End If Else textoAcodificar &= ch i += 1 End If Loop Return textoAcodificar End Function |
NOTA: Al codificar se utiliza la función HEX() la cual es nativa de Visual Basic. Sin embargo no existe la función inversa que nos convierta desde una cadena en hexadecimal a un valor numérico (" HEX to DEC") y para implementarla utilizamos el siguiente código:
el cual realiza exactamente esa función.
|