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

Common uses

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.

Artykuły: Kodowanie

Base64: po co jest kodowanie i jak działa

Jak Base64 zamienia dane binarne na tekst ASCII i kiedy naprawdę jest to potrzebne.

Base32: czym różni się od Base64 i kiedy jest wygodniejszy

Alfabet Base32 niewrażliwy na wielkość liter i sytuacje, w których jest wygodniejszy od Base64.

URL Encode/Decode: percent-encoding w linkach

Jak znaki specjalne w adresach i parametrach zamieniają się w sekwencje %XX.

HTML Entities: jak bezpiecznie wyświetlać znaki specjalne

Dlaczego znaki < > & trzeba escapować i jak to zapobiega uszkodzeniu znaczników.

JWT: budowa tokenu i co znaczy „dekodowanie" JWT

Header, payload i signature tokenu JWT oraz dlaczego dekodowanie to nie to samo co weryfikacja podpisu.

ROT13 i szyfr Cezara: proste podstawianie znaków

Dlaczego przesunięcie o 13 liter sprawia, że ROT13 jest samoodwrotny, i po co się go dziś używa.

Punycode: jak umiędzynarodowione domeny działają w DNS

Jak domena z niełacińskimi znakami zamienia się w formę ASCII z prefiksem xn--.

Alfabet Morse'a: jak tekst zamienia się w kropki i kreski

Zasada kodowania liter jako kropek i kresek oraz gdzie alfabet Morse'a jest dziś stosowany.

Data URI: kiedy osadzać obrazy bezpośrednio w kodzie

Jak Data URI osadza zawartość pliku bezpośrednio w HTML lub CSS i kiedy się to opłaca.

Gzip + Base64: kompresja danych do przesyłania jako tekst

Dlaczego skompresowane dane binarne dodatkowo koduje się w Base64, zanim trafią do pola tekstowego.

XML Entities: escapowanie znaków w dokumentach XML

Pięć obowiązkowych encji XML, bez których dokument psuje się podczas parsowania.