Як цей хлопець зламав ліміт на 140 символів Twitter?


36

Сьогодні я здивувався, побачивши, що хлопець зламав ліміт на 140 символів у Twitter. Повідомлення складається з 930 символів. Як це могло бути можливим?

Пряме посилання на цей твіт тут . Для зручності я копію скріншот повного твіту нижче:

введіть тут опис зображення


1
Здається, це крутий трюк, але це не є рішенням для межі 140 символів. Насправді її ЛИШЕ. Тому що люди чітко заявлять, що їм потрібно розповісти, а не писати все сміття. :)

1
Отож, хлопці, це може бути корисною інформацією, в центрі повідомлення є фразу російською мовою: Твиттим и не ограничиваемся людиии !!!!!! 140 не предел! Що англійською мовою: Продовжуйте щебетати без обмежень, люди !!!!! 140 - це не межа! Гадаю, якісь російські "хакери"? :-)
Робітник

Здається, що Twitter виправив цю помилку. Перевірте пряме посилання на твіт.
Мехпер К. Палавузлар

Коротка відповідь: у твіті менше 140 символів; це лише проблема кодування, через яку ваш браузер відображає його як більше символів.
ShreevatsaR

Коментар нижче заявляє, що проблема була виправлена ​​щебетанням. Сьогодні я натрапив на ще один твіт, який досить схожий - twitter.com/#!/luchetti/status/177524100930084864
Chethan S.

Відповіді:


41

Повідомлення містить сурогатні кодові точки Unicode, які неправильно кодуються як UTF-8. Цей вид неправильного кодування також називають CESU-8 . Схоже, деякі інтерфейси Twitter прийматимуть кодовані сурогатними кодовими кодами CESU-8 як символи (з метою обмеження 140 символів), але для цілей відображення він очікує дійсних UTF-8, і це не є дійсними послідовностями UTF-8. Таким чином, він замість цього відображає 3 байти кожної з цих послідовностей як 3 октальних послідовності в стилі С у стилі С по 4 символи кожен, і кожна сурогатна кодова точка в кінцевому підсумку відображається за допомогою 12 символів.

Наприклад, \ 355 \ 240 \ 265 \ 355 \ 263 \ 220 при декодуванні U-FT-8, що ухиляється від C, без відхилення сурогатів, як це було б зазвичай при декодуванні UTF-8, декодує до сурогатної пари U + D835 U + DCD0. Трактуючи цю сурогатну пару як UTF-16, як це було б зроблено при розшифровці CESU-8, створюється символ Unicode U + 1D4D0 МАТЕМАТИЧНИЙ СТІЛЬНИЙ СКРИПТ CAPITAL A (𝓐).

Якщо восьмикутне втеча в стилі С розшифрується, а результат інтерпретується як CESU-8, виходить:

𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твіттим і не обмежуємо людейіі !!!!!! 140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨

Ось це як зображення для тих, хто не встановив повний набір шрифтів Unicode:

𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 Твіттим і не обмежуємо людейіі !!!!!!  140 не предел! =)))) 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨 𝓐𝓛𝓜𝓐𝓣𝓨


1
насправді 101 персонаж - хороша робота @ mark4o
Йорг

3
Здається, що Twitter виправив цю помилку. Тепер повідомлення з’являється так само, як зображення, яке ви розмістили у своїй відповіді.
Мехпер К. Палавузлар

Я все ще бачу квадратні коробки, @ MehperC.Palavuzlar. Чи можливо, у мене немає будь-яких шрифтів, встановлених з повним набором символів Unicode?
Гая

3

Кожна група символів, що починається з зворотної косої риски, а за нею - три числа, - це " Послідовність втечі ". Кожен з них являє собою єдиний персонаж. Зазвичай вони використовуються для символів, які не існують на вашій клавіатурі, наприклад, символи та символи, які не є англійською мовою.

Думаю, що підраховуючи символів, Twitter рахує кожну з цих груп як єдиний символ, але при відображенні їх у браузері друкує їх як чотири.

Оновлення:

Деякі з доступних послідовностей евакуації є "контрольними символами". Вони говорять комп'ютеру зробити щось, наприклад відтворення звукового сповіщення або переміщення курсору вліво або вправо, вгору або вниз або видалення символу зліва від курсору. Хоча жоден з них не є останнім, про якого я згадував (видалення попереднього символу), він, можливо, використовував цього персонажа, щоб також плутати Twitter.

Цікаво, що, повернувшись до звичайних персонажів, він досить повторюваний і виглядає приблизно так:

í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ 

Оновлення 2:

Пояснення, яке він дав, було "Пишіть в DM, завжди по зв'язку)", яке Google Translate повідомляє мені: "Пишіть в DM, завжди підключення)". Я не впевнений, що саме це означає чи як це допомагає.


1
Я також подумав про це (це найрозумніше пояснення, яке мені спадає на думку), але проблема полягає в тому, що існує більше 140 груп із чотирьох (140 * 4 = 560, що менше, ніж 930 підрахунків, які Мефер заявив ).
Олексій

@Alex: Правильно. Я спробував скопіювати та вставити все повідомлення в нову скриньку твіттів, але Twitter каже, що це більше 140 символів. Я також спробував у TweetDeck, але знову не пішов.
Мехпер К. Палавузлар

Добре помічений. Я оновив свою відповідь, але не можу побачити жодних доказів того, що оновлення - це те, що відбулося насправді.
Ladadadada

2
@Mehper, ти не зможеш просто скопіювати його у твітте, бо тоді щебетати інтерпретували б його як окремі символи ('\', '3', '5', '5') і т. Д. Вам доведеться створити сценарій, який посилає "символи" у вигляді байтів, а не символів.
Tor Valamo

"Пишіть в DM, завжди по зв'язку)" означає, що він пропонує вам надіслати йому приватне повідомлення, він швидко відповість на нього. Мій переклад буде: "Надішліть DM, я завжди там".
Малькольм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.