AHKv2: Funciones URLEncode y URLDecode - Codifica y Decodifica URLs [22/04/2018]

Esta sección es para compartir scripts, librerías y herramientas.
User avatar
Flipeador
Posts: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

AHKv2: Funciones URLEncode y URLDecode - Codifica y Decodifica URLs [22/04/2018]

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

/* Codifica una cadena en formato Url. Parámetros: Url : La cadena de caracteres a codificar. Encoding: Codificación a usar. El estándar es UTF-8. UTF-16 es una implementación no estándar y no siempre es reconocida. Ejemplos: MsgBox("UTF-8:`n-----------------`nEncoded: " . (e:=URLEncode(t:="•ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~ÁÑñ")) . "`n`nDecoded: " . URLDecode(e) . "`n`nOriginal: " . t) MsgBox("UTF-16:`n-----------------`nEncoded: " . (e:=URLEncode(t:="•ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~ÁÑñ", "UTF-16")) . "`n`nDecoded: " . URLDecode(e) . "`n`nOriginal: " . t) */ URLEncode(Url, Encoding := "UTF-8") { Static Unreserved := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~" If (Url == "") return "" Local 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") { Local Buffer := "" , Code := 0x00 VarSetCapacity(Buffer, 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("Function URLEncode Parameter #2 invalid",, SubStr(Encoding, 1, 50)) 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

/* Decodifica una cadena en formato de Url (codificación de URL o por ciento). Parámetros: Url: La cadena de caracteres a decodificar. La codificación es detectada automáticamente. */ URLDecode(Url) { Local R := "", T := 0 , Encoding := InStr(Url, Chr(37) . "u") ? "UTF-16" : "UTF-8" , Trim := Encoding == "UTF-16" ? 2 : 1 ;%u : % , Length := Encoding == "UTF-16" ? 4 : 2 ;0x0000 : 0x00 Loop Parse, Url R .= A_LoopField == Chr(37) ? Chr("0x" . SubStr(Url, A_Index + Trim, T:=Length)) : (--T > -Trim ? "" : A_LoopField) If (Encoding == "UTF-8") { Local Buffer := "" VarSetCapacity(Buffer, StrPut(R, "UTF-8")) Loop Parse, R NumPut(Ord(A_LoopField), &Buffer + A_Index - 1, "UChar") } Return Encoding == "UTF-8" ? StrGet(&Buffer, "UTF-8") : R } ;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

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: 1018
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

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

24 Jan 2015, 15:40

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

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:

Return to “Scripts y Funciones”

Who is online

Users browsing this forum: No registered users and 3 guests