Nyx con Ejemplos

URL Encode

std/url provee percent-encoding para URLs (RFC 3986), construcción de query strings y escapado de entidades HTML. Esto es fundamental para construir clientes y servidores web que manejen la entrada del usuario de forma segura.

Código

// URL encoding, decoding, and query string building

import "std/url"

fn main() -> int {
    let raw: String = "hello world & foo=bar"
    let encoded: String = url_encode(raw)
    print("encoded: " + encoded)

    let decoded: String = url_decode(encoded)
    print("decoded: " + decoded)

    let keys: Array = ["name", "lang", "version"]
    let vals: Array = ["Nyx Lang", "es", "0.12"]
    let qs: String = build_query_string(keys, vals)
    print("query:   " + qs)

    let html: String = html_escape("<script>alert('xss')</script>")
    print("escaped: " + html)

    return 0
}

Salida

encoded: hello%20world%20%26%20foo%3Dbar
decoded: hello world & foo=bar
query:   name=Nyx%20Lang&lang=es&version=0.12
escaped: &lt;script&gt;alert('xss')&lt;/script&gt;

Explicación

url_encode codifica con percent-encoding todos los caracteres excepto los caracteres no reservados de RFC 3986 (A-Z, a-z, 0-9, -._~). Los espacios se convierten en %20, los ampersands en %26, etc. url_decode revierte el proceso y también decodifica + como espacio.

build_query_string toma arrays paralelos de claves y valores, codifica cada par y los une con &. Este es el formato estándar para parámetros de query en URLs y envíos de formularios HTML.

html_escape convierte los cinco caracteres sensibles de HTML (& < > " ') en sus equivalentes de entidad. Siempre hay que escapar la entrada del usuario antes de insertarla en HTML para prevenir ataques XSS.

← Anterior Siguiente →

Source: examples/by-example/42-url-encode.nx