AHKv2: Funciones URLEncode y URLDecode - Codifica y Decodifica URLs [15/05/2019]
Posted: 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).
URLDecode
La función URLDecode permite decodificar una cadena de caracteres en formato de URL (codificación de URL o por ciento).
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