Dzisiaj byłem zaskoczony widząc, że facet zhakował Twittera limit 140 znaków. Wiadomość składa się z 930 znaków. Jak to możliwe?
Bezpośredni link do tego tweeta znajduje się tutaj . Dla wygody kopiuję zrzut ekranu pełnego tweeta poniżej:
Dzisiaj byłem zaskoczony widząc, że facet zhakował Twittera limit 140 znaków. Wiadomość składa się z 930 znaków. Jak to możliwe?
Bezpośredni link do tego tweeta znajduje się tutaj . Dla wygody kopiuję zrzut ekranu pełnego tweeta poniżej:
Odpowiedzi:
Wiadomość zawiera punkty kodu zastępczego Unicode, które są niepoprawnie zakodowane jako UTF-8. Ten rodzaj niewłaściwego kodowania jest również nazywany CESU-8 . Wygląda na to, że niektóre interfejsy Twittera akceptują zakodowane w CESU-8 punkty zastępcze jako znaki (na potrzeby limitu 140 znaków), ale do celów wyświetlania oczekuje prawidłowego UTF-8 i nie są to prawidłowe sekwencje UTF-8. Zamiast tego wyświetla 3 bajty każdej z tych sekwencji jako 3 ósemkowe sekwencje specjalne w stylu C po 4 znaki, a każdy zastępczy punkt kodowy kończy się wyświetlaniem za pomocą 12 znaków.
Na przykład \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 po zdekodowaniu jako UTF-8 bez znaku C, bez odrzucania surogatów, jak to zwykle bywało podczas dekodowania UTF-8, dekoduje do pary zastępczej U + D835 U + DCD0. Traktowanie tej pary zastępczej jako UTF-16, tak jak byłoby to zrobione podczas dekodowania CESU-8, powoduje powstanie znaku Unicode U + 1D4D0 MATEMATYCZNE SKRÓCONE ŚREDNIO KAPITAŁ A (𝓐).
Jeśli ucieczka ósemkowa w stylu C zostanie zdekodowana, a następnie wynik zostanie zinterpretowany jako CESU-8, nastąpi:
𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твиттим и не ограничиваемся людиии !!!!!! 140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨
Oto obraz dla osób bez zainstalowanego pełnego zestawu czcionek Unicode:
Każda grupa znaków rozpoczynająca się od ukośnika odwrotnego, po której następują trzy cyfry, jest „ Sekwencją ucieczki ”. Każdy z nich reprezentuje jedną postać. Są one zwykle używane w przypadku znaków, które nie istnieją na klawiaturze, takich jak znaki i symbole w języku innym niż angielski.
Domyślam się, że podczas liczenia znaków Twitter liczy każdą z tych grup jako pojedynczy znak, ale podczas wyświetlania ich w przeglądarce drukuje je jako cztery.
Aktualizacja:
Niektóre dostępne sekwencje specjalne to „znaki kontrolne”. Informują one komputer, aby zrobił coś takiego, jak odtworzenie dźwięku ostrzegawczego lub przesunięcie kursora w lewo lub w prawo, w górę lub w dół lub usunięcie znaku na lewo od kursora. Chociaż żaden z nich nie jest ostatnim, o którym wspomniałem (usuwając poprzednią postać), mógł użyć tej postaci również do pomylenia Twittera.
Co ciekawe, po przekształceniu w normalne postacie jest dość powtarzalne i wygląda mniej więcej tak:
í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨
Aktualizacja 2:
Wyjaśnienie, które podał, brzmiało: „П DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DM DMя DM DM DM" which which which which which which which which which which which which which which which which which which which which which which which which which which whichи which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which which whichи which which which which which which which which whichи DM which DM which which which which which which which which which which which which which which which which which. Nie jestem pewien, co to dokładnie znaczy i jak to pomaga.