Unicode i tekst - wartości testowe

Znaki, które wyglądają niewinnie, a psują liczenie, porównywanie i wyświetlanie. 12 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.

unicode-text wersja 1.0, aktualizacja 2026-09-08 CC-BY-4.0

Wpisuj je po jednej skrótem AltShiftN w palecie albo weź wszystkie do skryptu poleceniem nkb emit unicode-text.

Wymuszenie kierunku od prawej do lewej

unicode-text/rtl-override
raporttxt.exe raport\u202Etxt.exe
  • 1 znak, który zmienia kierunek tekstu
  • 14 grafemów
  • 14 punktów kodowych
  • 16 bajtów
  • 14 jednostek UTF-16
Co psuje
Znak wymuszający kierunek sprawia, że tekst wyświetla się odwrócony: użytkownik widzi inną wartość niż zapisana.
Co robi poprawna aplikacja
Usunięte, escapowane albo pokazane ze zneutralizowanym działaniem - nigdy nie wyświetlane tak, jak jest.

Miękki łącznik

unicode-text/soft-hyphen
Kowalski Kowal\u00ADski
  • 1 miękki łącznik
  • 9 grafemów
  • 9 punktów kodowych
  • 10 bajtów
  • 9 jednostek UTF-16
Co psuje
Niewidoczny łącznik w środku słowa psuje dokładne wyszukiwanie i sprawia, że dwa identycznie wyglądające nazwiska są różnymi rekordami.
Co robi poprawna aplikacja
Zapisany bez zmian i znajdowany przez wyszukiwanie słowa Kowalski albo usuwany przez normalizację przy zapisie.

Łączący akcent ostry

unicode-text/combining-acute
é é
  • 1 grafem
  • 2 punkty kodowe
  • 3 bajty
  • 2 jednostki UTF-16
Co psuje
Ta sama litera zapisana jako litera bazowa ze znakiem łączącym porównuje się jako różna od postaci jednoznakowej.
Co robi poprawna aplikacja
Normalizowany przy zapisie albo porównywany z uwzględnieniem normalizacji.

Spiętrzone znaki łączące

unicode-text/zalgo
è́̂̃̄̅̆̇̈̉ è́̂̃̄̅̆̇̈̉
  • 1 grafem
  • 11 punktów kodowych
  • 21 bajtów
  • 11 jednostek UTF-16
Co psuje
Spiętrzone znaki łączące wychodzą w pionie poza wiersz i zasłaniają interfejs wokół pola.
Co robi poprawna aplikacja
Przyjęte i przycięte do ramki pola albo odrzucone z limitem znaków łączących.

Znacznik kolejności bajtów w wartości

unicode-text/bom-inside
JanKowalski Jan\uFEFFKowalski
  • 1 znak o zerowej szerokości
  • 12 grafemów
  • 12 punktów kodowych
  • 14 bajtów
  • 12 jednostek UTF-16
Co psuje
Znacznik kolejności bajtów w środku wartości przeżywa każde kopiowanie i po cichu psuje dokładne porównanie.
Co robi poprawna aplikacja
Usuwany przy zapisie albo zachowany i widoczny w interfejsie.

Znak sterujący dzwonka

unicode-text/bell-control
JanKowalski Jan\u0007Kowalski
  • 1 inny znak sterujący
  • 12 grafemów
  • 12 punktów kodowych
  • 12 bajtów
  • 12 jednostek UTF-16
Co psuje
Znak sterujący przekazany do terminala albo logu sprawia, że wyjście coś robi, zamiast coś mówić.
Co robi poprawna aplikacja
Odrzucony albo escapowany, zanim trafi do jakiegokolwiek logu, terminala albo raportu.

Litery łacińskie pełnej szerokości

unicode-text/fullwidth-latin
fullwidth fullwidth
  • 9 grafemów
  • 9 punktów kodowych
  • 27 bajtów
  • 9 jednostek UTF-16
Co psuje
Człowiek czyta litery pełnej szerokości jak łacińskie, a wyszukiwanie, filtry i kontrola unikalności jak zupełnie inne znaki.
Co robi poprawna aplikacja
Normalizowane do porównań albo przyjęte i konsekwentnie traktowane jako różne.

Matematyczne litery pogrubione

unicode-text/math-bold
𝐇𝐞𝐥𝐥𝐨 𝐇𝐞𝐥𝐥𝐨
  • 5 grafemów
  • 5 punktów kodowych
  • 20 bajtów
  • 10 jednostek UTF-16
Co psuje
Matematyczne warianty liter omijają filtry wulgaryzmów i wyszukiwanie, a wyglądają jak zwykłe słowa.
Co robi poprawna aplikacja
Normalizowane do porównań i filtrowania albo odrzucane w polach, w których oczekiwany jest zwykły tekst.

Litery do góry nogami

unicode-text/upside-down
ʇxǝʇ ʇxǝʇ
  • 4 grafemy
  • 4 punkty kodowe
  • 7 bajtów
  • 4 jednostki UTF-16
Co psuje
Zwykłe litery z innego bloku Unicode, używane do omijania filtrów i do psucia wyświetlania wierszy na listach.
Co robi poprawna aplikacja
Przyjęte jako zwykły tekst bez psucia układu i objęte tymi samymi filtrami co zwykły tekst.

Mieszane znaki CJK

unicode-text/cjk-mixed
名前テスト 名前テスト
  • 5 grafemów
  • 5 punktów kodowych
  • 15 bajtów
  • 5 jednostek UTF-16
Co psuje
Znaki podwójnej szerokości psują wyrównanie kolumn i mylą liczniki, które zakładają, że jeden znak to jedna komórka.
Co robi poprawna aplikacja
Wyświetlane i liczone poprawnie, a szerokości kolumn dopasowują się, zamiast się przelewać.

Arabski w łacińskim zdaniu

unicode-text/arabic-in-latin
JanمرحباKowalski Jan مرحبا Kowalski
  • 18 grafemów
  • 18 punktów kodowych
  • 23 bajty
  • 18 jednostek UTF-16
Co psuje
Tekst pisany od prawej do lewej w zdaniu pisanym od lewej do prawej zmienia na ekranie kolejność, więc kolejność na ekranie nie jest kolejnością zapisu.
Co robi poprawna aplikacja
Zapisany w kolejności logicznej i wyświetlany z poprawną izolacją, więc kopiowanie zwraca to, co zostało wpisane.

Emoji w polu imienia

unicode-text/emoji-in-name
Jan😀Kowalski Jan😀Kowalski
  • 12 grafemów
  • 12 punktów kodowych
  • 15 bajtów
  • 13 jednostek UTF-16
Co psuje
Znak spoza podstawowej płaszczyzny w polu imienia przekracza limity długości w bajtach i psuje bazy danych skonfigurowane na wąskie kodowania.
Co robi poprawna aplikacja
Zapisane w całości albo odrzucone z komunikatem - nigdy nie ucięte w połowie znaku.