Codificare e decodificare URL
Questo strumento converte testo Unicode nella codifica percentuale RFC 3986 e ripristina testo leggibile da valori validi.
Esegui gratis nel browser
Scelga la codifica quando un dato deve viaggiare come componente di URL, oppure la decodifica per leggere escape presenti in log, reindirizzamenti, query e collegamenti copiati. L’operazione è deterministica, non conserva stato e rifiuta sequenze malformate invece di produrre risultati fuorvianti. Può eseguirla nel browser oppure ottenere lo stesso comportamento tramite API al prezzo di $0.002 per elemento.
Quando applicare la codifica percentuale
Gli URL riservano alcuni caratteri alla struttura: le barre separano i segmenti, il punto interrogativo apre la query, le e commerciali dividono i parametri, il segno uguale separa nomi e valori e il cancelletto introduce i frammenti. Se uno di questi caratteri appartiene al dato, non deve essere confuso con la struttura. La codifica converte l’input in UTF-8 e rappresenta ogni byte che non corrisponde a un carattere non riservato con un segno percentuale seguito da due cifre esadecimali. Lettere, numeri, trattini, punti, trattini bassi e tilde restano leggibili. Gli spazi diventano <code>%20</code>, non un segno più, e la punteggiatura riservata viene protetta perché l’input è un valore, non un URL completo. Codifichi soltanto il componente da inserire; codificare un indirizzo già composto proteggerebbe anche i suoi separatori strutturali.
Come la decodifica rigorosa protegge i dati
La decodifica esamina l’intero input prima di restituire un valore. Ogni segno percentuale deve essere seguito esattamente da due cifre esadecimali, quindi <code>%</code>, <code>%2</code> e <code>%GG</code> causano un errore. I byte protetti devono poi formare UTF-8 valido. Una sequenza apparentemente corretta può contenere testo corrotto; accettare caratteri sostitutivi nasconderebbe il danno in log, callback o dati importati. Lo strumento segnala quindi l’errore. Non trasforma il segno più in spazio: tale convenzione riguarda i moduli HTML, mentre qui vale RFC 3986. Viene eseguito un solo passaggio: <code>%2520</code> diventa <code>%20</code>, non uno spazio. Un secondo passaggio deve essere richiesto esplicitamente, così la doppia decodifica non avviene per errore.
Come usare il risultato in sicurezza
Selezioni consapevolmente la modalità e invii la stringa esatta che rappresenta un singolo valore logico. Dopo la codifica non applichi un altro codificatore: il doppio passaggio trasforma ogni percentuale in <code>%25</code>. Dopo la decodifica tratti il testo come dato, non come markup affidabile, percorso o istruzione. Il recupero dei caratteri non ne convalida il significato per la destinazione successiva. Questa distinzione conta per parametri di callback, log, collegamenti normalizzati e identificatori. L’algoritmo non usa rete, casualità, orologio o stato; input identici producono output identici. Il browser è comodo per un controllo isolato, mentre l’API rende ripetibile la validazione in test e pipeline. Ogni elemento costa $0.002 tramite API.
Casi d'uso
Preparare un parametro di query
Codifichi il testo inserito affinché spazi, e commerciali, Unicode e punteggiatura riservata rimangano in un unico valore.
Esaminare log codificati
Decodifichi un percorso o parametro acquisito per leggerne il contenuto e individuare escape danneggiati.
Verificare un’integrazione
Crei fixture stabili e controlli che callback, reindirizzamenti e pipeline decodifichino esattamente un livello RFC 3986.
Domande frequenti
Quanto costa una richiesta API?
Ogni elemento costa $0.002 tramite API. L’esecuzione interattiva è disponibile nella pagina.
Barre e punti interrogativi vengono conservati?
No. L’input è un singolo valore, quindi viene codificata anche la punteggiatura riservata.
Gli spazi diventano segni più?
No. RFC 3986 rappresenta lo spazio come %20; la conversione del segno più appartiene ai moduli HTML.
Cosa accade con un escape malformato?
La decodifica restituisce un errore per escape incompleti, non esadecimali o byte che non formano UTF-8 valido.
Lo strumento decodifica più volte?
No. Ogni richiesta esegue un solo passaggio per evitare doppie decodifiche nascoste; lo ripeta soltanto intenzionalmente.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/web/url-encode-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world/café?x=1","mode":"encode"}'const res = await fetch("https://api.kit.forhosting.com/web/url-encode-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world/café?x=1",
"mode": "encode"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/url-encode-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world/café?x=1",
"mode": "encode"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/url-encode-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world/café?x=1","mode":"encode"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world/café?x=1","mode":"encode"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/url-encode-decode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "hello world/café?x=1",
"mode": "encode"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.url_encode_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
timeout_sec | 30 |
max_crawl_pages | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |