Convertitore Unicode
Convertitore Unicode online: incolla escape \uXXXX, graffe ES6, code point U+ o byte UTF-8 — riconosce da solo la forma e ti dà il testo leggibile più tutte le altre scritture in una volta. Tutto nel browser, niente upload.
Tutto gira nel tuo browser: il tuo input non viene mai caricato, registrato o memorizzato.
Qui comparirà il risultato Tutte le scritture in una volta
| JavaScript / Java / JSON uXXXX | — | |
|---|---|---|
| ES6 u{XXXXX} | — | |
| Python uXXXX / UXXXXXXXX | — | |
| Go uXXXX / UXXXXXXXX | — | |
| Rust u{XXXXX} | — | |
| Code point U+XXXX | — | |
| HTML decimale &#NNNNN; | — | |
| HTML esadecimale &#xXXXX; | — | |
| Codifica URL %XX | — | |
| CSS XXXXXX | — | |
| Byte UTF-8 hex | — | |
| Unità UTF-16 hex | — | |
| UTF-32 hex | — | |
| Byte ottali NNN | — | |
| Code point decimali NNNNN | — |
Carattere per carattere
| Carattere | Code point | UTF-8 | UTF-16 | Script | Categoria | Nome |
|---|---|---|---|---|---|---|
| Qui comparirà il risultato | ||||||
Riferimento rapido
| Carattere | Code point | JavaScript / Java / JSON | Byte UTF-8 | Codifica URL | HTML decimale |
|---|---|---|---|---|---|
| 中文 | U+4E2D U+6587 | \u4E2D\u6587 | E4 B8 AD E6 96 87 | %E4%B8%AD%E6%96%87 | 中文 |
| 😀 | U+1F600 | \uD83D\uDE00 | F0 9F 98 80 | %F0%9F%98%80 | 😀 |
| A | U+0041 | A | 41 | A | A |
| ␣ U+3000 | U+3000 | \u3000 | E3 80 80 | %E3%80%80 |   |
Comportamenti verificati su Node, Python, Java, Go e un motore di browser reale, non dedotti dalla documentazione.
Che cos'è un escape Unicode?
Un escape Unicode scrive un carattere usando solo caratteri ASCII, così la stringa attraversa senza danni i sistemi che non riuscirebbero a trasportare il carattere originale. Lo stesso carattere ha un escape diverso in quasi ogni linguaggio: JavaScript e JSON usano quattro cifre esadecimali per ogni unità di codice UTF-16, ES6 e Rust accettano il code point intero tra graffe, Python e Go aggiungono una forma larga a otto cifre, il CSS parte da una barra rovesciata nuda e l'HTML ha le sue entità numeriche e nominate. Descrivono tutti lo stesso code point, ed è per questo che la stessa stringa può arrivarti sotto una mezza dozzina di forme.
中文
U+4E2D U+6587 code point
\u4E2D\u6587 JavaScript / Java / JSON
\u{4E2D}\u{6587} ES6 / Rust
E4 B8 AD E6 96 87 UTF-8
%E4%B8%AD%E6%96%87 URL
中文 HTML Cosa fa questo convertitore
Riconosce la forma al posto tuo
Escape, graffe, escape larghi, code point, entità, percent-encoding e sequenze di byte vengono rilevati senza cambiare modalità.
Regge l'input misto
Cambiano solo le parti codificate. La punteggiatura JSON, i percorsi Windows e le barre rovesciate già sottoposte a escape restano come sono.
Tutte le scritture in una volta
Un solo incolla produce l'intera tabella, così non devi convertire due volte per passare da un linguaggio all'altro.
Correttezza linguaggio per linguaggio
I caratteri fuori dal BMP escono come escape largo per Python e Go, dove una coppia surrogata fallirebbe.
Ispezione carattere per carattere
Code point, byte UTF-8 e UTF-16, script e categoria per ogni carattere, più il nome Unicode dove esiste.
Fa emergere i caratteri invisibili
BOM, caratteri a larghezza zero e spazi unificatori ricevono un segnaposto visibile.
Esempi
Decodifica una riga di log senza toccare il resto
{"msg":"\u4e2d\u6587 failed","code":500} {"msg":"中文 failed","code":500} Cambiano solo le sequenze di escape. Virgolette, chiavi e numeri restano esattamente come erano, quindi puoi incollare l'intera riga di log invece di estrarre gli escape a mano.
Più forme mescolate in un unico incolla
U+4E2D \u{1F600} 中 \ud83d\ude00 中 😀 中 😀
Un code point, un escape ES6 tra graffe, un'entità HTML e una coppia surrogata, decodificati in un solo passaggio. Non c'è niente da selezionare o configurare prima.
Un carattere, tutte le sue scritture
中
\u4E2D JavaScript / Java / JSON
\u{4E2D} ES6 / Rust
U+4E2D code point
E4 B8 AD UTF-8
\344\270\255 octal Lo stesso carattere scritto come se lo aspetta ciascun linguaggio. Attenzione: Python e Go vogliono la forma larga per i caratteri fuori dal BMP, perché una coppia surrogata in Go non compila e in Python solleva UnicodeEncodeError.
Come si usa
- 1
Incolla
Butta dentro escape, code point, entità, byte codificati o testo normale. Non serve dire di che si tratta.
- 2
Leggi il risultato
Il testo leggibile compare subito, con l'indicazione di quali forme sono state riconosciute.
- 3
Copia la forma che ti serve
Sotto il risultato trovi tutte le scritture, ognuna con il suo pulsante di copia.
- 4
Ispeziona se qualcosa non torna
Apri la tabella dei caratteri per vedere code point, byte, script e nomi, e attiva Mostra caratteri invisibili per far emergere quelli nascosti.
Errori che vale la pena conoscere
Scrivere una coppia surrogata dove il linguaggio vuole un escape largo
Una coppia che funziona in JSON diventa due metà rotte in Python e in Go non compila proprio. Per i caratteri sopra U+FFFF usa la forma larga.
\ud83d\ude00
\U0001F600
Decodificare le entità numeriche HTML come semplici code point
Le entità tra 128 e 159 vanno lette attraverso windows-1252. Un'implementazione ingenua trasforma una virgoletta singola destra in un carattere di controllo invisibile: è il motivo per cui in un vecchio export quei punti non mostrano proprio nulla.
’ -> U+0092
’ -> U+2019
Usare un escape CSS corto davanti a un carattere esadecimale
Il parser continua a mangiare cifre esadecimali, così l'escape e il carattere successivo si fondono in un unico code point sbagliato. Portalo a sei cifre.
\4E2Da
\004E2Da
Quando serve
- Leggere i log
- Log del server e risposte delle API arrivano spesso con il non-ASCII sottoposto a escape. Incolla la riga e la leggi senza doverla prima ripulire.
- Spostare stringhe tra linguaggi
- Copi l'escape nella forma esatta che il linguaggio di destinazione accetta, invece di convertire a mano tra coppie surrogate ed escape larghi.
- Inseguire un bug di codifica
- Quando un confronto fallisce o il database rifiuta un valore, la tabella dei caratteri mostra quali code point e quali byte sono davvero in gioco.
- Ripulire testo incollato
- Il testo copiato da una pagina web o da un documento porta spesso con sé caratteri invisibili. Trovali prima che arrivino in produzione.
Dettagli tecnici
- Si fa escape delle unità di codice, non dei caratteri
- JavaScript, Java e JSON fanno escape di unità di codice UTF-16, quindi un carattere sopra U+FFFF richiede due escape. Python e Go offrono invece una forma a otto cifre che prende direttamente il code point.
- Le entità numeriche HTML vengono rimappate
- La specifica HTML impone di leggere le entità numeriche nell'intervallo da 128 a 159 attraverso windows-1252 anziché come code point, quindi un riferimento come 146 è una virgoletta singola destra e non un carattere di controllo invisibile.
- Gli escape CSS vanno riempiti
- Un escape CSS consuma fino a sei cifre esadecimali, quindi un escape corto seguito da un carattere esadecimale si fonde in un unico code point sbagliato. Portarlo a sei cifre elimina l'ambiguità, e uno spazio subito dopo viene consumato come terminatore.
- I surrogati spaiati si comportano diversamente ovunque
- Un surrogato spaiato viene conservato dalla serializzazione JSON, sostituito in silenzio da TextEncoder, rifiutato dal percent-encoding, scritto come punto interrogativo da Java e trasformato in errore da Python.
Buone pratiche
- Normalizza prima di confrontare
- Riporta entrambi i lati alla stessa forma di normalizzazione prima di confrontare o deduplicare, soprattutto per nomi e identificatori.
- Per Python e Go scegli la forma larga
- Una coppia surrogata è valida in JSON ma si rompe in entrambi i linguaggi. Usa l'escape a otto cifre quando la destinazione è codice sorgente Python o Go.
- Controlla i caratteri invisibili subito
- Valida l'input incollato al confine del sistema, invece di rincorrere molto più tardi un confronto che non torna.
- Tieni da parte l'originale
- La decodifica non è sempre reversibile senza perdite una volta che compaiono i caratteri di sostituzione. Conserva il valore grezzo finché non sei sicuro.
Domande frequenti
Cosa significa \u4e2d\u6587 e come lo rileggo?
Le barre rovesciate sono sparite e mi resta solo u4e2d: si può decodificare lo stesso?
Perché una sola emoji diventa due escape \u?
Come faccio il percorso inverso, da testo a escape?
Due stringhe sembrano identiche ma il codice dice che sono diverse. Perché?
C'è qualcosa di invisibile nella mia stringa che rompe il codice. Come lo trovo?
I miei dati vengono caricati da qualche parte?
Strumenti correlati
Vedi tutti gli strumenti →Decodificatore e codificatore Base64
Codifica e formattazione
Decodifica e codifica Base64 online gratis. Conversione in tempo reale con pieno supporto UTF-8 ed emoji. 100% privato — gira nel tuo browser. Nessuna registrazione.
Convertitore da Base64 a immagine
Codifica e formattazione
Decodifica una stringa Base64 o un data URI in un'immagine nel tuo browser. Anteprima, dimensioni e MIME, poi scarica come PNG, JPG, GIF, SVG. Nessun upload.
Convertitore CSV in JSON
Codifica e formattazione
Converti CSV in JSON nel browser. RFC 4180, inferenza tipi, riga header, sicuro per big-int. 100% privato, nessun upload.
Convertitore da .env a JSON
Codifica e formattazione
Incolla un file .env online e ottieni subito il JSON. Password, chiavi API e token non lasciano mai il browser: parser dotenv web, 100% privato, senza upload.
Decodificatore di entità HTML gratuito — Unescape HTML
Codifica e formattazione
Decodifica le entità HTML e fai l'unescape dell'HTML online — gratis, senza registrazione, 100% nel browser. Riconverte riferimenti con nome, decimali ed esadecimali in caratteri; mai caricato.
Codificatore di entità HTML gratuito — Escape HTML
Codifica e formattazione
Codifica le entità HTML e fai l'escape dei caratteri speciali (< > & " ') online — gratis, senza registrazione, 100% nel browser. Output con nome, decimale o esadecimale; mai caricato.