logo
GeekFormat

Codificació URL

Codi de codificació
Entrada d' URL
0 chars

Eina gratuïta en línia de codificació/descodificació URL. Admet 4 modes encodeURIComponent/encodeURI/RFC 3986, ressalta els caràcters codificats en temps real, mode per lots de múltiples línies, Query Only per codificar només els valors dels paràmetres. Processament local al navegador, sense càrrega de dades.

Relacionats

Casos d'ús

  • Depuració de paràmetres d'API: compara la sortida d'encodeURIComponent i encodeURI per resoldre problemes de desajustament de signatura d'interfície
  • Descodificació de registres: descodifica per lots el contingut codificat per URL dels registres per restaurar el text llegible
  • Creació d'URL: el mode Query Only conserva els noms de clau i només codifica els valors, evitant errors de format en la concatenació manual
  • Desenvolupament frontend: el ressaltat ajuda a entendre quins caràcters s'escapen, útil per depurar redireccions de pàgina
  • Migració de dades: processa per lots les dades codificades per URL exportades de sistemes antics per convertir-les al nou format

Característiques

  • Quatre modes de codificació: canvia entre encodeURIComponent / encodeURI / full / RFC 3986 amb un sol clic, compara les diferències de sortida en temps real
  • Ressaltat de codificació: ressalta els caràcters %XX escapats en temps real, el marcatge de color ambre fa que els resultats de la codificació siguin visibles immediatament
  • Mode per lots: admet la codificació/descodificació per lots de múltiples línies, cada línia es processa independentment, ideal per a registres o dades massives
  • Mode Query Only: només codifica la part del valor del paràmetre de l'URL (després del signe igual), deixant els noms de clau, els caràcters i l'estructura del camí intactes
  • Debounce en temps real: codifica/descodifica automàticament en 300 ms, no cal fer clic als botons, els resultats apareixen mentre escrius
  • Comptador de caràcters: mostra el nombre de caràcters introduïts en temps real, útil per comprovar els límits de longitud dels paràmetres de l'API

Com usar-ho

  1. Introdueix o enganxa l'URL o el text que vulguis codificar/descodificar
  2. Tria la direcció de codificació (Codifica/Descodifica) i el mode (Component / URI / full / RFC 3986)
  3. Activa el mode per lots per a dades de múltiples línies o Query Only per codificar només els valors dels paràmetres
  4. Comprova el resultat ressaltat i còpia la cadena codificada per utilitzar-la en crides a l'API o en la creació d'URL

Preguntes freqients

Quina diferència hi ha entre encodeURIComponent i encodeURI?

encodeURIComponent codifica tots els caràcters insegurs, incloent &, =, ?, etc., per tant és adequat per codificar els valors dels paràmetres individuals. encodeURI conserva els caràcters estructurals de l'URL (:, /, ?, #, etc.), per tant és adequat per codificar URLs complets. Escenari d'ús: Component per a valors de paràmetres, URI per a URLs complets.

Quina diferència hi ha entre RFC 3986 i la codificació estàndard?

RFC 3986 és la versió estàndard d'URL actualitzada, que considera la tilde ~ com un caràcter segur que no cal codificar, mentre que els estàndards antics la codifiquen com a %7E. L'ús de RFC 3986 pot evitar diferències d'anàlisi en alguns servidors i proporcionar una millor compatibilitat.

En quins escenaris s'utilitza el mode Query Only?

S'utilitza quan tens una query string d'URL de la forma ?name=张三&city=北京 i vols codificar només els valors dels paràmetres sense canviar els noms de clau i els caràcters. En aquest cas, name i city romanen inalterats, i els valors es codifiquen com a %E5%BC%A0%E4%B8%89 i %E5%8C%97%E4%BA%AC.

Els espais s'han de codificar com a + o com a %20?

En el format application/x-www-form-urlencoded (enviament de formularis HTML), els espais es codifiquen com a +. Però en els camins d'URL i en encodeURIComponent, els espais sempre es codifiquen com a %20. Aquesta eina utilitza per defecte el format %20.

Per què diferents eines donen resultats diferents per al mateix caràcter xinès?

Això depèn del mètode de codificació de caràcters. Aquesta eina utilitza la codificació UTF-8 (estàndard web), el caràcter xinès '中' es codifica com a %E4%B8%AD. Si altres eines utilitzen la codificació GBK, el resultat serà %D6%D0. Es recomana utilitzar sempre UTF-8 per a URLs web.

Per a què serveix el ressaltat de codificació?

Ressalta els caràcters codificats en format %XX (per exemple, espai→%20) en temps real, ajudant a entendre les regles de codificació i resoldre problemes. Les lletres i els nombres són caràcters segurs que no es codifiquen, només el xinès i els caràcters especials es codifiquen.

Cal codificar el propi caràcter %?

Sí. % és el caràcter inicial d'escapament en la codificació URL. Si un % literal apareix en un valor de paràmetre, s'ha de codificar com a %25; en cas contrari, s'interpretarà erròniament com un prefix de codificació, causant errors d'anàlisi. Per exemple, 100% s'ha de codificar com a 100%25.

Què és la codificació URL?

La codificació URL (codificació percentual) és el procés de convertir els caràcters insegurs de les URL al format %XX. Les URL només poden contenir un petit subconjunt de caràcters ASCII (lletres, nombres, -_.~), tots els altres caràcters (incloent xinès, espais, caràcters especials) s'han de codificar abans de ser transmesos en una URL. Per exemple, l'espai esdevé %20, el caràcter xinès '中' esdevé %E4%B8%AD.

**encodeURIComponent vs encodeURI**: Aquestes són les dues funcions de codificació més utilitzades. encodeURIComponent codifica més a fons, incloent separadors de paràmetres com ara &, =, ?, per tant és adequada per codificar els valors dels paràmetres individuals. encodeURI conserva l'estructura de l'URL (scheme://, camí, /, ?, #), per tant és adequada per codificar URLs complets. L'ús incorrecte provoca errors en l'anàlisi de paràmetres.

**RFC 3986 vs estàndards antics**: RFC 3986 considera la tilde ~ com un caràcter segur que no cal codificar, mentre que els estàndards primerencs la codifiquen com a %7E. L'ús de RFC 3986 redueix l'escapament innecessari, millora la llegibilitat de les URL i evita problemes d'anàlisi de %7E en alguns servidors.

**Mode Query Only**: S'utilitza quan vols codificar només els valors dels paràmetres a la query string de l'URL, sense canviar els noms de clau, els signes igual i els caràcters &. Per exemple, ?name=张三 es codifica com a ?name=%E5%BC%A0%E4%B8%89, mantenint els noms de clau llegibles i codificant només els valors.

**Ressaltat de codificació**: Ressalta els caràcters en format %XX amb color ambre en temps real, perquè els usuaris puguin veure immediatament quins caràcters s'han codificat. Això ajuda a entendre les regles de codificació: les lletres i els nombres solen ser caràcters segurs que no es codifiquen, només el xinès i els caràcters especials es codifiquen. Tots els càlculs es realitzen localment al navegador, no es carrega cap dada.

术语表

Codificació percentual (Percent-encoding)
El nom oficial de la codificació URL, un mètode de codificació que representa els caràcters amb % seguit de dos dígits hexadecimals. Per exemple, l'espai esdevé %20, el caràcter xinès '中' esdevé %E4%B8%AD.Viquipèdia - Percent-encoding
encodeURIComponent
Funció integrada de JavaScript que codifica tots els caràcters excepte A-Z a-z 0-9 - _ . ! ~ * ' ( ). S'utilitza més sovint per codificar els valors dels paràmetres de consulta individuals.
encodeURI
Funció integrada de JavaScript que conserva els caràcters estructurals de l'URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) i només codifica els caràcters que realment necessiten ser codificats. S'utilitza per codificar URLs complets.
RFC 3986
L'últim estàndard IETF per a la sintaxi general d'URI (2005), defineix les regles de codificació URL i classifica la tilde ~ com un caràcter no reservat (no cal codificar). Substitueix els antics RFC 2396 i RFC 1738.RFC 3986
Caràcters reservats (Reserved Characters)
Caràcters amb significat especial a les URL, com ara : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Aquests caràcters s'han de codificar quan s'utilitzen com a dades, però no en les seves posicions estructurals.
Caràcters no reservats (Unreserved Characters)
Caràcters segurs que es poden utilitzar en qualsevol posició de l'URL sense codificació, incloent A-Z, a-z, 0-9, -, _, ., ~ (segons RFC 3986).
Query String
La part de l'URL després de ?, que consta de parells key=value separats per &. Per exemple, a ?name=张三&age=20, name=张三 i age=20 són dos paràmetres.
URLSearchParams
API proporcionada pels navegadors moderns per crear i analitzar fàcilment les query strings d'URL, amb gestió automàtica de codificació i descodificació. Més segur i fiable que la concatenació manual de cadenes.
application/x-www-form-urlencoded
El format d'enviament per defecte per als formularis HTML, on els espais es codifiquen com a + en lloc de %20, cosa que difereix lleugerament d'encodeURIComponent. Els frameworks de servidor solen gestionar automàticament ambdós formats.
Codificació UTF-8
El mètode estàndard de codificació de caràcters per a la web. En codificar URL, els caràcters no ASCII (com ara xinès, emoji) es converteixen primer en seqüències de bytes UTF-8, i després cada byte es codifica en format %XX.

Comparació de caràcters escapats en 4 modes de codificació

CaràcterSignificatencodeURIComponentencodeURIRFC 3986
EspaiEspai%20%20%20
!Exclamació%21!%21
#Identificador de fragment%23#%23
$Signe del dòlar%24$%24
&Separador de paràmetres%26&%26
'Cometa simple%27'%27
(Parèntesi obert%28(%28
)Parèntesi tancat%29)%29
*Asterisc%2A*%2A
+Signe més%2B+%2B
,Coma%2C,%2C
/Separador de camí%2F/%2F
:Dos punts%3A:%3A
;Punt i coma%3B;%3B
=Signe igual%3D=%3D
?Signe d'interrogació%3F?%3F
@Arrova%40@%40
~Tilde%7E%7E~

Referència ràpida de caràcters reservats habituals d'URL

CodificatCaràcter originalÚs a l'URL
%20(espai)Espai
%21!Subseparador
%23#Identificador de fragment (hash)
%25%El propi caràcter d'escapament
%26&Separador de paràmetres de consulta
%2B+Signe més / espai al formulari
%2F/Separador de camí
%3A:Separador d'esquema
%3D=Separador clau-valor
%3F?Inici de query string
%40@Separador d'autenticació/correu
%5B[Paràmetre de matriu (RFC 3986)

Code Examples

Codificació/Descodificació URL a JavaScript

// encodeURIComponent: codifica els valors dels paràmetres individuals (el més utilitzat)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI: codifica l'URL complet (conserva els caràcters estructurals :/?#&=)
const url = encodeURI('https://example.com/search?q=hola món');
console.log(url);

// Descodificació
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// Compatible amb RFC 3986 (~ no codificat)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// API URLSearchParams (manera moderna, codificació automàtica)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Codificació/Descodificació URL a Python

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote: similar a encodeURIComponent
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# Mode RFC 3986 (~ per defecte no codificat)
print(quote('hello~world'))  # hello~world

# quote_plus: els espais es codifiquen com a + (format de formulari)
print(quote_plus('hello world'))  # hello+world

# Descodificació
print(unquote(encoded))  # 张三&李四

# urlencode: crear query string
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Codificació/Descodificació URL a Java

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // Codificació URL (URLEncoder - format de formulari, els espais esdevenen +)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // Descodificació
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // Crear URL complet (la classe URI gestiona la codificació automàticament)
        URI uri = new URI("https", "example.com", "/search", "q=hola", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References