Kodowanie i krzaki - wartości testowe

Tekst, który przeszedł przez złe kodowanie i już z niego nie wrócił. 11 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.

encoding-mojibake wersja 1.0, aktualizacja 2026-10-14 CC-BY-4.0

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

Tekst zakodowany dwa razy

encoding-mojibake/double-encoded
Żółć Żółć
  • 8 grafemów
  • 8 punktów kodowych
  • 18 bajtów
  • 8 jednostek UTF-16
Co psuje
Tekst zakodowany dwa razy wyświetla się jako bełkot, a zapisanego w tym stanie nie da się już przywrócić do oryginału.
Co robi poprawna aplikacja
Nigdy niewytwarzany, a jeśli przyjdzie z zewnątrz, zapisany dosłownie, a nie „naprawiany” zgadywaniem.

Znacznik kolejności bajtów przed imieniem

encoding-mojibake/bom-leading
Jan \uFEFFJan
  • 1 znak o zerowej szerokości
  • 4 grafemy
  • 4 punkty kodowe
  • 6 bajtów
  • 4 jednostki UTF-16
Co psuje
Znacznik kolejności bajtów na początku wartości psuje dokładne porównanie i ustawia rekord przed wszystkimi innymi.
Co robi poprawna aplikacja
Usuwany przy wprowadzaniu, konsekwentnie w każdej warstwie, która czyta pliki.

Znak zastępczy w imieniu i nazwisku

encoding-mojibake/replacement-char
Jan�Kowalski Jan�Kowalski
  • 12 grafemów
  • 12 punktów kodowych
  • 14 bajtów
  • 12 jednostek UTF-16
Co psuje
Znak, który pojawia się tam, gdzie dekodowanie już zawiodło. Jego obecność znaczy, że dane zginęły wcześniej.
Co robi poprawna aplikacja
Wykryty i zgłoszony, a nie zapisany jak zwykły tekst.

Znaki zapytania zamiast utraconych liter

encoding-mojibake/question-mark-fallback
Jan???????? Jan ????????
  • 12 grafemów
  • 12 punktów kodowych
  • 12 bajtów
  • 12 jednostek UTF-16
Co psuje
To, co wąskie kodowania wstawiają zamiast znaków, których nie umieją zapisać. Nie do odróżnienia od znaków zapytania wpisanych przez użytkownika.
Co robi poprawna aplikacja
Nigdy niewytwarzane: pełny zestaw znaków obsługiwany od początku do końca.

Litera z akcentem na końcu

encoding-mojibake/latin1-tail
café café
  • 4 grafemy
  • 4 punkty kodowe
  • 5 bajtów
  • 4 jednostki UTF-16
Co psuje
Popularne słowo z akcentem, które przetrwa albo się zepsuje, zależnie od kodowania każdej warstwy, przez którą przechodzi.
Co robi poprawna aplikacja
Identyczne przed zapisem i po ponownym wczytaniu.

Litery z regionalnych kodowań

encoding-mojibake/cp-specific-letters
źżćńó źżćńó
  • 5 grafemów
  • 5 punktów kodowych
  • 10 bajtów
  • 5 jednostek UTF-16
Co psuje
Litery obecne w regionalnych kodowaniach i nieobecne w innych. Pierwsze, co psuje się w eksporcie.
Co robi poprawna aplikacja
Zachowane w eksportach, wydrukach i nazwach plików.

Jedna cyrylicka litera w łacińskim nazwisku

encoding-mojibake/mixed-scripts
JanКowalski Jan Кowalski
  • 12 grafemów
  • 12 punktów kodowych
  • 13 bajtów
  • 12 jednostek UTF-16
Co psuje
Jedna cyrylicka litera w łacińskim słowie. Wartość wygląda poprawnie i nigdy nie pasuje do wyszukiwania.
Co robi poprawna aplikacja
Albo normalizowana, albo oznaczona, a nie po cichu przyjęta jako identyczna.

Emoji, ideogram i arabski naraz

encoding-mojibake/high-codepoint
😀中ال 😀中ال
  • 4 grafemy
  • 4 punkty kodowe
  • 11 bajtów
  • 5 jednostek UTF-16
Co psuje
Emoji, ideogram i arabska litera w jednej wartości: trzy różne założenia o zapisie naraz.
Co robi poprawna aplikacja
Zapisane i zwrócone bez zmian.

Spacja ideograficzna w imieniu i nazwisku

encoding-mojibake/overlong-space
JanKowalski Jan\u3000Kowalski
  • 1 spacja, która nie jest zwykłą spacją
  • 12 grafemów
  • 12 punktów kodowych
  • 14 bajtów
  • 12 jednostek UTF-16
Co psuje
Spacja ideograficzna: prawdziwy znak odstępu, o którym większość funkcji przycinających nie wie.
Co robi poprawna aplikacja
Przycinana jak każdy inny biały znak albo konsekwentnie zachowywana.

Litera z pięcioma akcentami łączącymi

encoding-mojibake/combining-overflow
á́́́́ á́́́́
  • 1 grafem
  • 6 punktów kodowych
  • 11 bajtów
  • 6 jednostek UTF-16
Co psuje
Wiele znaków łączących na jednej literze: normalizacja i limity długości nie zgadzają się, ile to jest znaków.
Co robi poprawna aplikacja
Liczona konsekwentnie i rysowana bez zasłaniania sąsiednich elementów interfejsu.

Każda ryzykowna klasa w jednej wartości

encoding-mojibake/roundtrip-check
Żółć😀中ą Żółć 😀 中 ą
  • 10 grafemów
  • 10 punktów kodowych
  • 20 bajtów
  • 11 jednostek UTF-16
Co psuje
Jedna wartość łącząca każdą ryzykowną klasę znaków, do szybkiej próby zapisu i ponownego wczytania.
Co robi poprawna aplikacja
Zwrócona bajt w bajt identyczna po pełnym obiegu.