Unicode decoderen en encoderen online
Decodeer elke Unicode-notatie terug naar leesbare tekst: escapes, ES6-accolades, U+-codepunten en UTF-8-bytes worden automatisch herkend. Alle andere schrijfwijzen komen er in één keer bij. Alles draait in je browser.
Alles draait in je browser — er gaat niets naar een server en er wordt niets opgeslagen.
Het resultaat verschijnt hier Alle schrijfwijzen in één keer
| JavaScript / Java / JSON uXXXX | — | |
|---|---|---|
| ES6 u{XXXXX} | — | |
| Python uXXXX / UXXXXXXXX | — | |
| Go uXXXX / UXXXXXXXX | — | |
| Rust u{XXXXX} | — | |
| Codepunt U+XXXX | — | |
| HTML decimaal &#NNNNN; | — | |
| HTML hex &#xXXXX; | — | |
| URL-geëncodeerd %XX | — | |
| CSS XXXXXX | — | |
| UTF-8-bytes hex | — | |
| UTF-16-eenheden hex | — | |
| UTF-32 hex | — | |
| Octale bytes NNN | — | |
| Decimale codepunten NNNNN | — |
Teken voor teken
| Teken | Codepunt | UTF-8 | UTF-16 | Script | Categorie | Naam |
|---|---|---|---|---|---|---|
| Het resultaat verschijnt hier | ||||||
Snelle referentie
| Teken | Codepunt | JavaScript / Java / JSON | UTF-8-bytes | URL-geëncodeerd | HTML decimaal |
|---|---|---|---|---|---|
| 中文 | 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 |   |
Het gedrag is getoetst aan Node, Python, Java, Go en een echte browser-engine, niet afgeleid uit documentatie.
Wat is een Unicode-escape?
Een Unicode-escape schrijft een teken met alleen ASCII, zodat het systemen overleeft die het teken zelf niet kunnen dragen. Bijna elke taal heeft er een eigen notatie voor: JavaScript en JSON schrijven vier hex-cijfers per UTF-16-code unit, ES6 en Rust nemen een heel codepunt tussen accolades, Python en Go hebben daarnaast een brede vorm van acht cijfers, CSS gebruikt een kale backslash en HTML heeft zijn eigen numerieke en benoemde referenties. Ze beschrijven allemaal hetzelfde codepunt. Daarom komt één string in een half dozijn gedaantes bij je binnen.
中文
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 Wat deze converter doet
Herkent zelf welke vorm het is
Escapes, accolades, brede escapes, codepunten, entiteiten, percent-encoding en losse bytes worden herkend zonder dat je eerst een modus kiest.
Gemengde invoer blijft heel
Alleen de geëncodeerde stukken veranderen. JSON-leestekens, Windows-paden en al geëscapede backslashes blijven staan zoals ze zijn.
Alle schrijfwijzen in één keer
Eén plakactie levert de hele tabel op, dus je hoeft nooit twee keer om te zetten om van de ene taal naar de andere te komen.
Per taal de juiste vorm
Tekens buiten de BMP komen er voor Python en Go als brede escape uit, waar een surrogaatpaar zou stukgaan.
Inspectie op tekenniveau
Codepunt, UTF-8- en UTF-16-bytes, script en categorie voor elk afzonderlijk teken, plus de Unicode-naam als het teken er een heeft.
Maakt onzichtbare tekens zichtbaar
Byte-order marks, zero-width joiners en niet-brekende spaties krijgen een zichtbare vervanger.
Voorbeelden
Een hele logregel plakken, alleen de escapes veranderen
{"msg":"\u4e2d\u6587 failed","code":500} {"msg":"中文 failed","code":500} Alleen de escape-sequenties worden vervangen. Aanhalingstekens, sleutels en getallen blijven precies zoals ze waren, dus je plakt gewoon de hele regel in plaats van de escapes er met de hand uit te vissen.
Vier schrijfwijzen in één plakactie
U+4E2D \u{1F600} 中 \ud83d\ude00 中 😀 中 😀
Een codepunt, een ES6-escape met accolades, een HTML-entiteit en een surrogaatpaar, in één doorgang allemaal gedecodeerd. Je hoeft vooraf niets te selecteren of in te stellen.
Eén teken, alle schrijfwijzen
中
\u4E2D JavaScript / Java / JSON
\u{4E2D} ES6 / Rust
U+4E2D code point
E4 B8 AD UTF-8
\344\270\255 octal Hetzelfde teken, geschreven zoals elke taal het verwacht. Let op dat Python en Go voor tekens buiten de BMP de brede vorm nodig hebben: een surrogaatpaar compileert niet in Go en levert in Python een UnicodeEncodeError op.
Zo gebruik je het
- 1
Plakken
Escapes, codepunten, entiteiten, geëncodeerde bytes of gewone tekst — alles mag. Je hoeft niet te zeggen welke vorm het is.
- 2
Het resultaat lezen
De leesbare tekst verschijnt meteen, met daarbij welke schrijfwijzen zijn herkend.
- 3
De vorm kopiëren die je nodig hebt
Onder het resultaat staan alle schrijfwijzen, elk met een eigen kopieerknop.
- 4
Doorprikken als iets niet klopt
Open de tekentabel voor codepunten, bytes, script en namen, en zet “Onzichtbare tekens tonen” aan om verstopte tekens boven water te halen.
Valkuilen die je moet kennen
Een surrogaatpaar schrijven waar de taal een brede escape wil
Een paar dat het in JSON prima doet, wordt in Python twee kapotte helften en compileert in Go helemaal niet. Gebruik de brede vorm voor tekens boven U+FFFF.
\ud83d\ude00
\U0001F600
Numerieke HTML-referenties als gewone codepunten decoderen
Referenties tussen 128 en 159 moeten via windows-1252 gelezen worden. Een naïeve implementatie maakt van een rechter enkel aanhalingsteken een onzichtbaar stuurteken, en daarom staat er in een oude export op die plekken helemaal niets meer.
’ -> U+0092
’ -> U+2019
Een korte CSS-escape vlak voor een hex-teken zetten
De parser blijft hex-cijfers opslokken, dus de escape en het volgende teken smelten samen tot één verkeerd codepunt. Vul aan tot zes cijfers.
\4E2Da
\004E2Da
Wanneer je dit nodig hebt
- Logs lezen
- Serverlogs en API-responses komen vaak binnen met alles buiten ASCII geëscaped. Plak de regel en lees hem zonder hem eerst te bewerken.
- Strings tussen talen verplaatsen
- Kopieer de escape precies in de vorm die de doeltaal accepteert, in plaats van met de hand tussen surrogaatparen en brede escapes te rekenen.
- Een encoding-bug opsporen
- Als een vergelijking mislukt of een database een waarde weigert, laat de tekentabel zien om welke codepunten en bytes het precies gaat.
- Geplakte inhoud opschonen
- Tekst uit een webpagina of een document sleept vaak onzichtbare tekens mee. Vind ze voordat ze in productie belanden.
Technische details
- Escapes gaan over code units, niet over tekens
- JavaScript, Java en JSON escapen UTF-16-code units, dus een teken boven U+FFFF heeft twee escapes nodig. Python en Go bieden daarnaast een vorm van acht cijfers die het codepunt rechtstreeks opneemt.
- Numerieke HTML-referenties worden omgelegd
- De HTML-specificatie vereist dat numerieke referenties tussen 128 en 159 via windows-1252 worden gelezen in plaats van als codepunt. Een referentie als 146 is daardoor een rechter enkel aanhalingsteken (U+2019) en geen onzichtbaar stuurteken.
- CSS-escapes moeten aangevuld worden
- Een CSS-escape slikt tot zes hexadecimale cijfers, dus een korte escape gevolgd door een hex-teken smelt samen tot één verkeerd codepunt. Aanvullen tot zes cijfers haalt de dubbelzinnigheid weg, en een spatie erachter wordt als afsluiter opgeslokt.
- Losse surrogates pakken overal anders uit
- Een ongepaarde surrogate blijft bewaard bij JSON-serialisatie, wordt stil vervangen door TextEncoder, wordt geweigerd door percent-encoding, komt er bij Java als vraagteken uit en levert in Python een fout op.
Aanbevolen aanpak
- Normaliseer voordat je vergelijkt
- Vouw beide kanten naar dezelfde normalisatievorm voordat je vergelijkt of ontdubbelt, zeker bij namen en identifiers.
- Kies de brede vorm voor Python en Go
- Een surrogaatpaar is geldig in JSON maar gaat in beide talen stuk. Gebruik de escape van acht cijfers als de doeltaal Python of Go is.
- Controleer vroeg op onzichtbare tekens
- Valideer geplakte invoer meteen aan de grens, in plaats van later een mislukte vergelijking uit te pluizen.
- Bewaar het origineel
- Decoderen is niet altijd verliesvrij omkeerbaar zodra er vervangingstekens verschijnen. Houd de ruwe waarde bij tot je zeker bent.
Veelgestelde vragen
Wat betekent \u4e2d\u6587 en hoe lees ik dat?
De backslashes zijn weggevallen en ik heb alleen nog u4e2d over. Kan dat nog gedecodeerd worden?
Waarom staat één emoji als twee \u-escapes?
Hoe ga ik de andere kant op en zet ik tekst om naar escapes?
Twee strings zien er identiek uit, maar mijn code zegt dat ze verschillen. Hoe kan dat?
Er zit iets onzichtbaars in mijn string dat mijn code breekt. Hoe vind ik het?
Wordt mijn data ergens geüpload?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Base64 naar afbeelding converter
Encodering en formattering
Decodeer een Base64-string of data-URI terug naar een afbeelding in je browser. Bekijk voorbeeld, lees afmetingen & MIME, download als PNG, JPG, GIF, SVG. Geen upload.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
.env naar JSON Converter
Encodering en formattering
Plak een .env-bestand, krijg direct JSON. Je wachtwoorden, API-sleutels en tokens verlaten nooit je browser — 100% privé, gratis dotenv-parser.
Gratis HTML-entiteiten decoder — HTML unescapen
Encodering en formattering
Decodeer HTML-entiteiten en unescape HTML online — gratis, geen account, 100% in je browser. Zet genoemde, decimale & hex-referenties terug naar tekens; nooit geüpload.
Gratis HTML-entiteiten encoder — HTML escapen
Encodering en formattering
Encodeer HTML-entiteiten en escape speciale tekens (< > & " ') online — gratis, geen account, 100% in je browser. Genoemde, decimale of hex-uitvoer; nooit geüpload.