Unicode naar UTF-8 converter

Zet letterlijke Unicode-tekst om naar de escape-syntaxis \u00E9, \u{1F600} die programmeertalen in broncode inbedden, of plak een geëscapete tekenreeks en decodeer die terug naar de oorspronkelijke tekens. Werkt voor BMP-tekens (viercijferige escapes) en aanvullende vlakken zoals emoji (variabele lengte \u{...}).

Zo converteer je tussen Unicode en UTF-8-escapes

  1. 1

    Kies een richting

    Codeer tekens naar `\u`-escapes, of decodeer een geëscapete tekenreeks terug naar tekst.

  2. 2

    Plak je invoer

    Platte tekst om te coderen; een tekenreeks met `\uXXXX`- of `\u{XXXXX}`-reeksen om te decoderen.

  3. 3

    Lees de uitvoer

    BMP-tekens leveren viercijferige escapes in de stijl `\u0041`; tekens boven U+FFFF gebruiken de ES6-vorm `\u{...}`.

  4. 4

    Kopieer naar je code

    Zet het resultaat in een JavaScript-tekenreeks, een JSON-literal, een configuratiebestand of een testfixture.

Escape-syntaxis in verschillende talen

Verschillende talen drukken hetzelfde idee anders uit. De converter geeft de gangbare JavaScript/JSON-vorm, maar dit is waarnaar je vertaalt wanneer je hetzelfde teken elders schrijft.

Escape-syntaxis per taal

Taal BMP (<= U+FFFF) Aanvullend (> U+FFFF)
JavaScript \u00E9 \u{1F600} (ES6+)
JSON \u00E9 Surrogaatpaar \uD83D\uDE00
Python \u00e9 \U0001F600
Java \u00e9 Surrogaatpaar
C / C++ \u00e9 \U0001F600
Ruby \u00e9 \u{1F600}
Rust \u{00e9} \u{1F600}
HTML-entiteit &#xE9; &#x1F600;
CSS \0000e9 \1F600

Waarom emoji de lange vorm nodig hebben

De Basic Multilingual Plane (BMP) omvat U+0000 tot U+FFFF, alles past in één 16-bits eenheid, waarvoor de oude \uXXXX-syntaxis is ontworpen. Emoji zitten vooral in vlak 1 (U+1F000 en hoger), dat niet in vier hexadecimale cijfers past. Twee opties:

  1. ES6-accolades, \u{1F600} accepteert elke lengte.
  2. UTF-16-surrogaatparen, twee \uXXXX-escapes voor één teken. JSON-parsers accepteren dit, en het is wat JSON-encoders meestal produceren.

Beide decoderen naar dezelfde tekenreeks, maar surrogaatparen zijn kwetsbaar: een tekenreeks knippen tussen het hoge en lage surrogaat geeft ongeldige UTF-16.

Veelgestelde vragen

Vier hexadecimale cijfers reiken maximaal tot U+FFFF. Emoji beginnen bij U+1F000, dus hebben ze de ES6-accoladevorm \u{...} nodig, of een UTF-16-surrogaatpaar als je met oudere doelen werkt. Dit hulpmiddel gebruikt accolades voor alles boven U+FFFF.

Niet als paar. De decoder begrijpt de accoladevorm \u{1F600} en viercijferige \uXXXX-escapes, maar hij voegt een UTF-16-surrogaatpaar (de vorm met twee escapes die JSON gebruikt) niet samen tot één emoji: elke helft wordt afzonderlijk gedecodeerd en valt niet te reconstrueren. Plak voor alles boven U+FFFF de accoladevorm \u{...}, precies wat de encoder ook produceert.

Nee. Een escape als \u00E9 staat voor het codepunt U+00E9, niet voor de UTF-8-bytereeks (die C3 A9 zou zijn). Gebruik voor de weergave van ruwe bytes het hulpmiddel Unicode Lookup, dat UTF-8-bytes in HEX toont.

De conversie gebeurt aan de serverzijde binnen dit verzoek, maar er wordt niets bewaard: geen logging, geen opslag van de tekenreeksen die je converteert.

Gerelateerde tools

Tool beschikbaar in andere talen