Kodowanie
Unicode Escape
Kodowanie i dekodowanie sekwencji Unicode — znaki w formacie \uXXXX i z powrotem.
A Unicode escape sequence (\uXXXX) writes a character as its code point instead of the character itself — so a string literal in code can contain any Unicode character while the source file itself stays plain ASCII.
How to use it
- Encode: paste text and every non-ASCII character gets replaced with its matching \uXXXX sequence.
- Decode: paste a string containing \uXXXX sequences to get plain, readable text back.
- Characters outside the Basic Multilingual Plane (most emoji) are encoded as a surrogate pair of two sequences.
Common uses
- Reading JSON or JS code where non-ASCII text was pre-escaped into \uXXXX for compatibility.
- Inserting a character that's not on the keyboard into code via an explicit Unicode escape.
- Debugging why a string with an emoji shows up as two odd characters — recognizing a surrogate pair.
Things to keep in mind
\uXXXX encodes exactly one 16-bit UTF-16 unit, not one visible character — characters outside the Basic Multilingual Plane (most emoji) need two such sequences together (a surrogate pair).
JSON only requires escaping for control characters and a few special characters — escaping every character as \uXXXX isn't required, though it is valid.
Artykuł o tym narzędziu: Unicode Escape: co oznaczają sekwencje \uXXXX
Najczęstsze pytania
Co oznacza format \uXXXX?
To zapis pojedynczego punktu kodowego Unicode jako czterech cyfr szesnastkowych, używany m.in. w JavaScript, JSON i Javie do reprezentowania znaków spoza podstawowego zestawu ASCII wewnątrz zwykłego łańcucha tekstowego.
Dlaczego emoji i inne znaki spoza BMP zajmują dwie sekwencje \uXXXX?
Znaki spoza Podstawowej Płaszczyzny Wielojęzycznej (BMP), takie jak większość emoji, mają punkty kodowe powyżej U+FFFF i nie mieszczą się w jednej 16-bitowej jednostce. W UTF-16 zapisuje się je jako parę surogatów — dwie sekwencje \uXXXX razem tworzące jeden znak.
Czym różnią się tryby Nie-ASCII i Wszystkie znaki?
Tryb Nie-ASCII zamienia na sekwencje \uXXXX tylko znaki spoza standardowego ASCII, zachowując litery, cyfry i podstawową interpunkcję w oryginalnej postaci. Tryb Wszystkie znaki koduje w ten sposób każdy znak wejścia, także zwykłe litery łacińskie.
Co się stanie, jeśli parę zastępczą rozdzielimy na pół?
Powstanie niepoprawny znak-„sierota" — samotny kod bez pary. Większość parserów albo odrzuci taki ciąg z błędem, albo wyświetli znak zastępczy „�".
Czy emoji można zakodować jednym \uXXXX?
Nie, jeśli emoji znajduje się poza Podstawową Płaszczyzną Wielojęzyczną (a większość współczesnych emoji właśnie taka jest) — wymaga wtedy zawsze pary zastępczej złożonej z dwóch sekwencji \uXXXX.