Wszystkie artykuły

Unicode Escape: co oznaczają sekwencje \uXXXX

Polski ma dziewięć liter spoza podstawowego alfabetu ASCII — ą, ć, ę, ł, ń, ó, ś, ź, ż — a każda z nich to osobny punkt kodowy Unicode, więc każda zamienia się dokładnie na jeden kod ucieczki, np. \u0142 dla „ł".

„ł" to nie akcent, tylko inna litera

W przeciwieństwie do „ą" czy „ę", które wyglądają jak litera z dodanym znakiem, „ł" jest w polskim alfabecie osobną literą, niepowiązaną algorytmicznie z „l" — dla Unicode to i tak nie ma znaczenia, każdy znak dostaje swój punkt kodowy niezależnie od tego, czy językoznawczo jest to „akcent", czy osobna litera.

JSON i sekwencje ucieczki

Specyfikacja JSON pozwala escapować dowolny znak ciągu jako \uXXXX. Zdarza się to często, gdy dane są generowane programowo, a serializator celowo unika znaków spoza ASCII dla kompatybilności — słowo takie jak „łódź" może wtedy pojawić się w JSON jako ciąg kilku kodów ucieczki zamiast czterech zwykłych liter.

Kiedy to potrzebne

  • Odczytanie w zwykłym języku, jaki tekst kryje się za sekwencjami ucieczki w odpowiedzi JSON z API.
  • Przygotowanie ciągu dla środowiska, które nie akceptuje znaków spoza ASCII.
  • Diagnozowanie problemów z kodowaniem podczas pracy z danymi zewnętrznymi.

Znaki poza podstawową płaszczyzną (emoji)

Wszystkie dziewięć polskich znaków diakrytycznych mieści się w podstawowej płaszczyźnie wielojęzycznej i zamienia się na pojedynczy kod ucieczki. Emoji leżą poza tą płaszczyzną i w JavaScript są kodowane dwoma kodami — parą zastępczą, taką jak \ud83d\ude00 — czego nie doświadczy żadna polska litera.

Wypróbuj narzędzie