Jak ten facet zhakował limit 140 znaków na Twitterze?

36

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:

wprowadź opis zdjęcia tutaj

Mehper C. Palavuzlar
źródło
1
To wydaje się być fajną sztuczką, ale nie jest rozwiązaniem dla limitu 140 znaków. Właściwie to LEPIEJ. Ponieważ ludzie jasno określą, co powinni powiedzieć, zamiast pisać wszystkie śmieci. :)
1
Więc, chłopaki, może być przydatna informacja, w środku wiadomości jest po rosyjsku frase: Твиттим и не ограничиваемся людиии !!!!!! 140 не предел! Co po angielsku brzmi: twittinguj bez ograniczeń, ludzie !!!!! 140 nie jest granicą! Sądzę, że niektórzy rosyjscy „hakerzy”? :-)
Worker
Wygląda na to, że Twitter naprawił ten błąd. Sprawdź bezpośredni link do tweeta.
Mehper C. Palavuzlar,
Krótka odpowiedź: tweet ma mniej niż 140 znaków; to tylko problem z kodowaniem, który powoduje, że przeglądarka wyświetla go jako więcej znaków.
ShreevatsaR
Komentarz poniżej stwierdza, że ​​problem został rozwiązany przez Twittera. Dzisiaj natknąłem się na inny tweet, który jest dość podobny - twitter.com/#!/luchetti/status/177524100930084864
Chethan S.

Odpowiedzi:

41

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:

𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твиттим и не ограничиваемся людиии !!!!!!  140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨

mark4o
źródło
1
właściwie 101 znaków - dobra robota @ mark4o
Jörg
3
Wygląda na to, że Twitter naprawił ten błąd. Teraz wiadomość pojawi się tak, jak obraz opublikowany w odpowiedzi.
Mehper C. Palavuzlar,
Nadal widzę kwadratowe pola @ MehperC.Palavuzlar. Czy to możliwe, że NIE mam zainstalowanych ŻADNYCH czcionek z pełnym zestawem znaków Unicode?
Gaia,
3

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.

Ladadadada
źródło
1
Myślałem o tym również (jest to najbardziej rozsądne wyjaśnienie, jakie przychodzi mi do głowy), ale problem polega na tym, że istnieje o wiele więcej niż 140 grup czterech (140 * 4 = 560, czyli mniej niż liczba 930 podana przez Mephera ).
Alex
@Alex: Zgadza się. Próbowałem skopiować i wkleić całą wiadomość w nowym polu tweeta, ale Twitter twierdzi, że to ponad 140 znaków. Próbowałem także w TweetDeck, ale znowu nie ma mowy.
Mehper C. Palavuzlar
Dobrze zauważony. Zaktualizowałem odpowiedź, ale nie widzę żadnych dowodów na to, że aktualizacja rzeczywiście się wydarzyła.
Ladadadada,
2
@Mehper nie możesz po prostu skopiować go do skrzynki tweetowej, ponieważ wtedy Twitter zinterpretuje go jako osobne znaki („\”, „3”, „5”, „5”) itp. Musisz stworzyć skrypt, który wysyła „symbole” jako bajty, a nie znaki specjalne.
Tor Valamo,
„Пишите в DM, всегда на связи)” oznacza, że ​​zaprasza cię do wysłania mu prywatnej wiadomości, odpowie na nią szybko. Moje tłumaczenie brzmiałoby: „Wyślij DM, zawsze tam jestem”.
Malcolm,