AHKv2: Funciones URLEncode y URLDecode - Codifica y Decodifica URLs [15/05/2019]

Esta sección es para compartir scripts, librerías y herramientas.

Moderator: Flipeador

User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

AHKv2: Funciones URLEncode y URLDecode - Codifica y Decodifica URLs [15/05/2019]

Post by Flipeador » 22 Dec 2014, 16:42

Introducción
El código por ciento, también llamado código URI o código URL, se usa en Internet para escribir los identificadores de nombres (URN) y ubicaciones (URL). Consta de 2 grupos diferentes de caracteres, los no reservados y los reservados. Los no reservados incluyen a las letras mayúsculas y minúsculas del alfabeto sin signos diacríticos, los números de 0 a 9, más los signos - _ . ~. Los caracteres reservados pueden tener significados especiales, caso en que se representan por un número hexadecimal precedido del carácter %. Esta codificación, dada en ésta tabla, consiste habitualmente en el signo % seguido del número hexadecimal ASCII correspondiente al carácter codificado.
No hay acuerdo generalizado sobre la codificación de otros caracteres, en especial los siguientes a los 128 primeros caracteres ASCII. Son de uso generalizado en Internet, pero no siempre concordante. [+info]





URLEncode
La función URLEncode permite codificar una cadena de caracteres para ser utilizada en una URL de forma literal (codificación de URL).

Code: Select all

/*
    Encode a string in URL Encoding.
    Parámetros:
        Url:
            The string to be encoded.
        Encoding
            The encoding to use. The standard is UTF-8. UTF-16 is a non-standard implementation and is not always recognized.
*/
URLEncode(Url, Encoding := "UTF-8")
{
    local
    static Unreserved := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~"

    Encoded := ""

    if (Encoding = "UTF-16")
    {
        Loop Parse, Url
            Encoded .= InStr(Unreserved,A_LoopField) ? A_LoopField : Format("%u{:04X}",Ord(A_LoopField))
    }

    else if (Encoding = "UTF-8")
    {
        Buffer := BufferAlloc(StrPut(Url,"UTF-8"))
        StrPut(Url, Buffer, "UTF-8")

        while (Code := NumGet(Buffer,A_Index-1,"UChar"))
            Encoded .= InStr(Unreserved,Chr(Code)) ? Chr(Code) : Format("%{:02X}",Code)
    }

    else
        throw Exception("URLEncode function, invalid parameter #2.", -1)

    return Encoded
} ;http://rosettacode.org/wiki/URL_encoding#AutoHotkey | https://en.wikipedia.org/wiki/Percent-encoding



URLDecode
La función URLDecode permite decodificar una cadena de caracteres en formato de URL (codificación de URL o por ciento).

Code: Select all

/*
    Decode a string in URL Encoding.
    Parameters:
        Url:
            The string to decode. The encoding is detected automatically.
*/
URLDecode(Url)
{
    local

    dec := ""
    T   := 0

    if (InStr(Url,"%u"))  ; UTF-16.
    {
        loop parse, Url
            dec .= A_LoopField == "%" ? Chr("0x" . SubStr(Url,A_Index+2,(T:=5)-1)) : ( --T > -1 ? "" : A_LoopField )
        return dec
    }

    Loop Parse, Url
        dec .= A_LoopField == "%" ? Chr("0x" . SubStr(Url,A_Index+1,T:=2)) : ( --T > -1 ? "" : A_LoopField )

    Buffer := BufferAlloc(StrPut(dec,"UTF-8"))
    Loop Parse, dec
        NumPut("UChar", Ord(A_LoopField), Buffer, A_Index-1)
    NumPut("UChar", 0x00, Buffer, Buffer.Size-1)

    return StrGet(Buffer, "UTF-8")
} ;https://autohotkey.com/boards/viewtopic.php?t=4868
Last edited by Flipeador on 12 Jan 2017, 23:38, edited 13 times in total.

User avatar
salvarb
Posts: 15
Joined: 15 Jan 2015, 07:19

Re: Funciones Archivos Y Carpetas ~ ComObjCreate() y ComObjG

Post by salvarb » 21 Jan 2015, 15:10

Magnificos scripts, sin duda los revisaré, seguro que más de una cosa me es de utilidad.

User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Funciones Archivos Y Carpetas ~ ComObjCreate() y ComObjG

Post by Flipeador » 24 Jan 2015, 15:40

salvarb wrote:Magnificos scripts, sin duda los revisaré, seguro que más de una cosa me es de utilidad.
:thumbup:
Si te interesa aquí tienes mas (acabo de actualizar 24/01): http://ahkscript.org/boards/viewtopic.php?f=42&t=5535 ;)

User avatar
salvarb
Posts: 15
Joined: 15 Jan 2015, 07:19

Re: Funciones Archivos Y Carpetas ~ ComObjCreate() y ComObjG

Post by salvarb » 26 Jan 2015, 02:06

Si te interesa aquí tienes mas (acabo de actualizar 24/01): http://ahkscript.org/boards/viewtopic.php?f=42&t=5535 ;)
Genial!!! si tengo dudas te comento.
Gracias por tu trabajo!!! :dance:

Post Reply

Return to “Scripts y Funciones”