Сьогодні я здивувався, побачивши, що хлопець зламав ліміт на 140 символів у Twitter. Повідомлення складається з 930 символів. Як це могло бути можливим?
Пряме посилання на цей твіт тут . Для зручності я копію скріншот повного твіту нижче:
Сьогодні я здивувався, побачивши, що хлопець зламав ліміт на 140 символів у Twitter. Повідомлення складається з 930 символів. Як це могло бути можливим?
Пряме посилання на цей твіт тут . Для зручності я копію скріншот повного твіту нижче:
Відповіді:
Повідомлення містить сурогатні кодові точки 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:
Кожна група символів, що починається з зворотної косої риски, а за нею - три числа, - це " Послідовність втечі ". Кожен з них являє собою єдиний персонаж. Зазвичай вони використовуються для символів, які не існують на вашій клавіатурі, наприклад, символи та символи, які не є англійською мовою.
Думаю, що підраховуючи символів, Twitter рахує кожну з цих груп як єдиний символ, але при відображенні їх у браузері друкує їх як чотири.
Оновлення:
Деякі з доступних послідовностей евакуації є "контрольними символами". Вони говорять комп'ютеру зробити щось, наприклад відтворення звукового сповіщення або переміщення курсору вліво або вправо, вгору або вниз або видалення символу зліва від курсору. Хоча жоден з них не є останнім, про якого я згадував (видалення попереднього символу), він, можливо, використовував цього персонажа, щоб також плутати Twitter.
Цікаво, що, повернувшись до звичайних персонажів, він досить повторюваний і виглядає приблизно так:
í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨ í µ í ³ í µ í ³ › í µ í ³ œ í µ í ³ í µ í ³ £ í µ í ³ ¨
Оновлення 2:
Пояснення, яке він дав, було "Пишіть в DM, завжди по зв'язку)", яке Google Translate повідомляє мені: "Пишіть в DM, завжди підключення)". Я не впевнений, що саме це означає чи як це допомагає.