Skip to content

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.

Geen tracking Draait in je browser Gratis

Alles draait in je browser — er gaat niets naar een server en er wordt niets opgeslagen.

0 tekens
Leesbare tekst
Het resultaat verschijnt hier
Normaliseren
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  
Elke omzetting in de referentietabel is voor publicatie gecontroleerd tegen twee onafhankelijke implementaties. — Go Tools Engineering Team · Aug 27, 2026

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. 1

    Plakken

    Escapes, codepunten, entiteiten, geëncodeerde bytes of gewone tekst — alles mag. Je hoeft niet te zeggen welke vorm het is.

  2. 2

    Het resultaat lezen

    De leesbare tekst verschijnt meteen, met daarbij welke schrijfwijzen zijn herkend.

  3. 3

    De vorm kopiëren die je nodig hebt

    Onder het resultaat staan alle schrijfwijzen, elk met een eigen kopieerknop.

  4. 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.

✗ Fout
\ud83d\ude00
✓ Correct
\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.

✗ Fout
’  ->  U+0092
✓ Correct
’  ->  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.

✗ Fout
\4E2Da
✓ Correct
\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?
Elke \uXXXX is één UTF-16-code unit in hexadecimale notatie. \u4e2d is U+4E2D en \u6587 is U+6587 — samen de twee tekens 中文. Plak de hele string hierboven en de leesbare tekst komt terug; de JSON of logregel eromheen blijft precies zoals hij was.
De backslashes zijn weggevallen en ik heb alleen nog u4e2d over. Kan dat nog gedecodeerd worden?
Ja. Terminals en logpipelines slikken backslashes regelmatig in. Een kale u4e2du6587 wordt herkend en gedecodeerd, terwijl gewone woorden die toevallig een u bevatten met rust worden gelaten.
Waarom staat één emoji als twee \u-escapes?
Tekens boven U+FFFF passen niet in één UTF-16-code unit, dus JavaScript, Java en JSON schrijven ze als surrogaatpaar. Een lachend gezicht is één codepunt, twee UTF-16-eenheden en vier UTF-8-bytes. De tekentabel laat die drie tellingen naast elkaar zien.
Hoe ga ik de andere kant op en zet ik tekst om naar escapes?
Typ of plak gewone tekst en lees de tabel onder het resultaat. Alle schrijfwijzen worden in één keer geproduceerd, dus je kopieert meteen de vorm die jouw taal verwacht in plaats van twee keer om te zetten.
Twee strings zien er identiek uit, maar mijn code zegt dat ze verschillen. Hoe kan dat?
Waarschijnlijk zijn ze anders genormaliseerd. Een letter met accent kan één codepunt zijn, of een basisletter plus een combinerend teken; beide renderen hetzelfde maar zijn niet gelijk. Met de NFC-knop vouw je ze naar dezelfde vorm. Let op dat normalisatie ook voor CJK geen lege operatie is — compatibiliteitsideogrammen veranderen onder gewone NFC.
Er zit iets onzichtbaars in mijn string dat mijn code breekt. Hoe vind ik het?
Zet “Onzichtbare tekens tonen” aan. Byte-order marks, zero-width spaties, niet-brekende spaties en variatieselectors krijgen een zichtbare vervanger, en de tekentabel noemt elk teken bij naam en geeft de bytes erbij.
Wordt mijn data ergens geüpload?
Nee. Het omzetten gebeurt in je browser, zonder netwerkverzoek. Er gaat niets naar een server en er wordt niets gelogd of opgeslagen, dus je kunt gerust een productielogregel plakken.

Gerelateerde tools

Alle tools bekijken →