Konwerter Unicode
Wklej dowolny zapis Unicode i odczytaj go jako tekst. Sekwencje \uXXXX, klamry ES6, punkty kodowe U+ i ciągi bajtów rozpoznaje sam, po czym wypisuje wszystkie zapisy naraz. Działa w przeglądarce, nic nie wysyła.
Wszystko działa w przeglądarce — dane wejściowe nigdy nie są wysyłane, logowane ani zapisywane.
Wynik pojawi się tutaj Wszystkie zapisy za jednym razem
| JavaScript / Java / JSON uXXXX | — | |
|---|---|---|
| ES6 u{XXXXX} | — | |
| Python uXXXX / UXXXXXXXX | — | |
| Go uXXXX / UXXXXXXXX | — | |
| Rust u{XXXXX} | — | |
| Punkt kodowy U+XXXX | — | |
| HTML dziesiętnie &#NNNNN; | — | |
| HTML szesnastkowo &#xXXXX; | — | |
| Zakodowane w URL %XX | — | |
| CSS XXXXXX | — | |
| Bajty UTF-8 hex | — | |
| Jednostki UTF-16 hex | — | |
| UTF-32 hex | — | |
| Bajty ósemkowo NNN | — | |
| Dziesiętne punkty kodowe NNNNN | — |
Znak po znaku
| Znak | Punkt kodowy | UTF-8 | UTF-16 | Pismo | Kategoria | Nazwa |
|---|---|---|---|---|---|---|
| Wynik pojawi się tutaj | ||||||
Ściąga
| Znak | Punkt kodowy | JavaScript / Java / JSON | Bajty UTF-8 | Zakodowane w URL | HTML dziesiętnie |
|---|---|---|---|---|---|
| 中文 | 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 |   |
Zachowanie sprawdzone w Node, Pythonie, Javie, Go i w prawdziwym silniku przeglądarki, a nie wywnioskowane z dokumentacji.
Czym jest sekwencja ucieczki Unicode?
Sekwencja ucieczki zapisuje znak wyłącznie za pomocą ASCII, dzięki czemu przechodzi przez systemy, które samego znaku nie udźwigną. Ten sam znak ma inną sekwencję w niemal każdym języku: JavaScript i JSON zapisują cztery cyfry szesnastkowe na jednostkę UTF-16, ES6 i Rust biorą cały punkt kodowy w klamry, Python i Go dokładają formę ośmiocyfrową, CSS zaczyna od samego ukośnika odwrotnego, a HTML ma własne odwołania liczbowe i nazwane. Wszystkie opisują ten sam punkt kodowy — dlatego jeden ciąg potrafi pojawiać się w kilku różnych postaciach.
中文
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 Co potrafi ten konwerter
Sam rozpoznaje zapis
Sekwencje ucieczki, klamry, formy ośmiocyfrowe, punkty kodowe, encje, kodowanie procentowe i ciągi bajtów wykrywa bez przełączania trybu.
Radzi sobie z mieszanym wejściem
Zmienia się tylko część zakodowana. Interpunkcja JSON, ścieżki Windows i już zabezpieczone ukośniki zostają takie, jakie były.
Wszystkie zapisy za jednym razem
Jedno wklejenie daje całą tabelę, więc nigdy nie trzeba konwertować dwa razy, żeby przejść z jednego języka do drugiego.
Poprawność pod konkretny język
Znaki spoza BMP dostają formę ośmiocyfrową dla Pythona i Go, gdzie para surogatów by nie zadziałała.
Rozbiór na pojedyncze znaki
Punkt kodowy, bajty UTF-8 i UTF-16, pismo i kategoria dla każdego znaku, a do tego nazwa Unicode wszędzie tam, gdzie znak ją ma.
Pokazuje niewidoczne znaki
Znaczniki BOM, łączniki o zerowej szerokości i twarde spacje dostają widoczny zamiennik.
Przykłady
Cała linia logu: zmienia się tylko część zakodowana
{"msg":"\u4e2d\u6587 failed","code":500} {"msg":"中文 failed","code":500} Cudzysłowy, nazwy kluczy i liczby zostają nietknięte, więc można wkleić całą linię zamiast ręcznie wyłuskiwać z niej sekwencje.
Cztery różne zapisy w jednym wklejeniu
U+4E2D \u{1F600} 中 \ud83d\ude00 中 😀 中 😀
Punkt kodowy, klamrowa sekwencja ES6, encja HTML i para surogatów — wszystko zdekodowane za jednym przebiegiem. Nie trzeba niczego wcześniej wybierać ani konfigurować.
Jeden znak, każdy zapis z osobna
中
\u4E2D JavaScript / Java / JSON
\u{4E2D} ES6 / Rust
U+4E2D code point
E4 B8 AD UTF-8
\344\270\255 octal Ten sam znak zapisany tak, jak oczekuje go każdy z języków. Python i Go wymagają dla znaków spoza BMP formy ośmiocyfrowej — para surogatów nie skompiluje się w Go, a w Pythonie kończy się wyjątkiem UnicodeEncodeError.
Jak używać
- 1
Wklej
Sekwencje ucieczki, punkty kodowe, encje, zakodowane bajty albo zwykły tekst. Nie trzeba z góry mówić, co to jest.
- 2
Odczytaj wynik
Czytelny tekst pojawia się od razu, wraz z informacją, jakie zapisy zostały rozpoznane.
- 3
Skopiuj potrzebną formę
Pod wynikiem znajduje się lista wszystkich zapisów, każdy z własnym przyciskiem kopiowania.
- 4
Zajrzyj głębiej, gdy coś nie gra
Otwórz tabelę znaków, żeby zobaczyć punkty kodowe, bajty, pismo i nazwy, i włącz pokazywanie niewidocznych znaków.
Pułapki, o których warto wiedzieć
Para surogatów tam, gdzie język chce formy ośmiocyfrowej
Para, która działa w JSON, w Pythonie staje się dwiema połamanymi połówkami, a w Go nie chce się skompilować. Dla znaków powyżej U+FFFF użyj formy ośmiocyfrowej.
\ud83d\ude00
\U0001F600
Odczytywanie liczbowych odwołań HTML wprost jako punktów kodowych
Odwołania z zakresu od 128 do 159 trzeba czytać przez windows-1252. Naiwna implementacja zamienia prawy apostrof w niewidoczny znak sterujący — i dlatego w starym eksporcie w tych miejscach nie wyświetla się zupełnie nic.
’ -> U+0092
’ -> U+2019
Krótka sekwencja CSS przed znakiem szesnastkowym
Parser dalej połyka cyfry szesnastkowe, więc sekwencja i następny znak zlewają się w jeden błędny punkt kodowy. Dopełnij do sześciu cyfr.
\4E2Da
\004E2Da
Kiedy się przydaje
- Czytanie logów
- Logi serwera i odpowiedzi API często przychodzą z zakodowanym nie-ASCII. Wklej linię i przeczytaj ją bez wcześniejszej edycji.
- Przenoszenie ciągów między językami
- Skopiuj sekwencję dokładnie w formie, którą przyjmuje język docelowy, zamiast ręcznie przeliczać pary surogatów na formy ośmiocyfrowe.
- Tropienie błędu kodowania
- Kiedy porównanie zawodzi albo baza odrzuca wartość, tabela znaków pokazuje dokładnie, jakie punkty kodowe i bajty wchodzą w grę.
- Czyszczenie wklejonej treści
- Tekst skopiowany ze strony albo z dokumentu często niesie niewidoczne znaki. Znajdź je, zanim trafią na produkcję.
Szczegóły techniczne
- Sekwencje kodują jednostki UTF-16, a nie znaki
- JavaScript, Java i JSON zabezpieczają jednostki kodowe UTF-16, więc znak powyżej U+FFFF wymaga dwóch sekwencji. Python i Go oferują zamiast tego formę ośmiocyfrową, która mieści cały punkt kodowy.
- Liczbowe odwołania HTML czyta się inaczej
- Specyfikacja HTML wymaga, by odwołania liczbowe z zakresu od 128 do 159 czytać przez windows-1252, a nie jak punkty kodowe. Dlatego odwołanie 146 to prawy apostrof, a nie niewidoczny znak sterujący.
- Sekwencje CSS trzeba dopełnić
- Sekwencja CSS pochłania do sześciu cyfr szesnastkowych, więc krótki zapis, po którym stoi znak szesnastkowy, zlewa się w jeden błędny punkt kodowy. Dopełnienie do sześciu cyfr usuwa dwuznaczność, a następująca po niej spacja zostaje potraktowana jako znak kończący.
- Każdy język robi z niesparowanym surogatem coś innego
- Niesparowany surogat zostaje zachowany przy serializacji JSON, po cichu podmieniony przez TextEncoder, odrzucony przez kodowanie procentowe, zapisany jako znak zapytania przez Javę i zgłoszony jako błąd przez Pythona.
Dobre praktyki
- Normalizuj przed porównaniem
- Przed porównaniem albo usuwaniem duplikatów sprowadź obie strony do tej samej postaci normalizacyjnej, zwłaszcza przy nazwiskach i identyfikatorach.
- Dla Pythona i Go wybieraj formę ośmiocyfrową
- Para surogatów jest poprawna w JSON, a psuje się w obu tych językach. Gdy celem jest kod Pythona albo Go, użyj sekwencji ośmiocyfrowej.
- Sprawdzaj niewidoczne znaki wcześnie
- Waliduj wklejone dane już na granicy wejścia, zamiast później tropić niezgodność w porównaniach.
- Zachowaj oryginał
- Gdy pojawią się znaki zastępcze, dekodowanie przestaje być bezstratnie odwracalne. Trzymaj surową wartość, dopóki nie ma pewności.
Najczęstsze pytania
Co znaczy \u4e2d\u6587 i jak to odczytać?
Ukośniki zniknęły i został sam u4e2d. Czy to jeszcze da się odczytać?
Dlaczego jedno emoji zapisuje się jako dwie sekwencje \u?
Jak zrobić to w drugą stronę i zamienić tekst na sekwencje ucieczki?
Dwa ciągi wyglądają identycznie, a kod twierdzi, że się różnią. Dlaczego?
W ciągu siedzi coś niewidocznego i psuje kod. Jak to znaleźć?
Czy wklejone dane są gdziekolwiek wysyłane?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Koder i dekoder Base64
Kodowanie i formatowanie
Zakoduj i zdekoduj Base64 online za darmo. Konwersja w czasie rzeczywistym z pełną obsługą UTF-8 i emoji. 100% w przeglądarce, bez rejestracji.
Konwerter Base64 na obraz
Kodowanie i formatowanie
Zdekoduj ciąg Base64 lub data URI z powrotem na obraz w przeglądarce. Podejrzyj, odczytaj wymiary i MIME, a potem pobierz jako PNG, JPG, GIF, SVG. Bez przesyłania.
Konwerter CSV na JSON
Kodowanie i formatowanie
Konwertuj CSV na JSON w przeglądarce. RFC 4180, wnioskowanie typów, nagłówek, big-int safe. 100% prywatnie, bez wysyłki.
Konwerter .env na JSON
Kodowanie i formatowanie
Wklej plik .env i od razu otrzymaj JSON. Hasła, klucze API i tokeny nigdy nie opuszczają przeglądarki — 100% prywatnie, bez wysyłania, parser dotenv.
Darmowy dekoder encji HTML — unescape HTML
Kodowanie i formatowanie
Dekoduj encje HTML i unescape HTML online — za darmo, bez rejestracji, w 100% w przeglądarce. Zamienia odwołania nazwane, dziesiętne & szesnastkowe z powrotem na znaki; nic nie jest wysyłane.
Darmowy koder encji HTML — escape HTML
Kodowanie i formatowanie
Koduj encje HTML i znaki specjalne (< > & " ') online — za darmo, bez rejestracji, w 100% w przeglądarce. Wynik nazwany, dziesiętny lub szesnastkowy; nic nie jest wysyłane.