ElTicus.com

Programación, lenguajes y recursos para programadores

**
Recurso no clasificado
Las funciones para codificar y descodificar un URL (código fuente en Visual Basic)
URLENCODE y URLDECODE
Publicado por jl Fecha: 2009-03-17 23:24:07 Idioma: Español Tipo de documento: Código fuente

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:

clng("&h" & hexnumber)

el cual realiza exactamente esa función.





Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Recurso no clasificado Las funciones para codificar y descodificar un URL (código fuente)