Якщо ви коли - небудь намагалися відправити порожнє повідомлення в Telegram, то, швидше за все, виявили, що ні знак пробілу, ні знак нового рядка (Alt + Enter) не відправляються-поле введення просто очищається. У той же час ви могли бачити, що інші люди буквально посилають вам порожнє місце, і вони досягають успіху. Де тут магія? Якщо вам потрібна коротка відповідь - вони вставляють" зламаний " символ u + 3164. Ви можете скопіювати його з дужок і використовувати: "ㅤㅤㅤ". Якщо ви хочете отримати більш детальну відповідь, Нижче ми розповімо вам, звідки береться невидимий текст, як його отримати і використовувати, чому ви не повинні використовувати його в коді і які ще існують символи.
Невидимий символ-як він працює?
Давайте почнемо пояснення з таблиць символів і кодувань. Будь-який комп'ютер на апаратному рівні розуміє 2 Символи: 0 і 1. Це незручно для людей, тому що ми все ще більше звикли до букв, які складаються в слова, пропозиції, абзаци і так далі. Щоб працювати з цими буквами без будь-яких проблем, ми придумали дуже просту схему-беремо букви по порядку і привласнюємо їм унікальні номери: a = 1, b = 2, c = 3 і так далі. Ми також присвоюємо унікальні номери заголовним буквам, знакам (Крапка, кома, знак питання і так далі), пробілам і цифрам – в списку вимальовується унікальний ідентифікатор, який присвоюється кожному можливому символу. Цей список називається таблицею кодів символів, і першою розпізнаною таблицею кодів був ASCII:
Друга половина порожня. Він призначений для регіональних символів. Сама таблиця схожа на довідкову інформацію. Існує також кодування-набір інструкцій для розшифровки цієї таблиці. Кодування з'явилися через регіональні стандарти. Вони необхідні для того, щоб "правильно" читати символи. Якщо ми візьмемо кодування, яка була поширена в СНД в той час, то в ній буде інструкція: "щоб отримати букву "г" використовуйте 8x3 в ASCII"; якщо ми візьмемо кодування, яка використовувалася в Німеччині в той час, то в ній буде написано: "щоб отримаєте букву "β", використовуючи 8x3".
Оскільки це було жахливо незручно через локалізацію на кілька мов, була винайдена і стандартизована нова таблиця символів-Unicode. Юнікод може містити більше 1 000 000 символів. На даний момент в Юнікод додано близько 100 000 символів – таким чином, доступно ще 90% осередків. Універсальне кодування UTF було винайдено для Unicode, щоб дизайнерам було простіше малювати шрифти (так, для кожного окремого кодування дизайнерам потрібно малювати окремий шрифт).
Цього достатньо для передісторії - тепер прийшов час з'ясувати, звідки взявся невидимий персонаж. Вся справа в помилках Unicode: деякі спеціальні (Керуючі і пробільні) символи поводяться не так, як передбачалося. Найцікавіша група жуків для нас-це невидимий персонаж. Справа в тому, що знак повинен бути особливим і повинен відображатися як дуже маленький пробіл, але кодування сприймає його як повноцінний символ (наприклад, букву або цифру) і відображає його як великий пробіл. Можливо, ви вже здогадалися, як можна використовувати невидиму область в якості повноцінного знака – вставити пробіл там, де він не передбачений.
Невидимий текст - як скопіювати і вставити?
Для початку ми повідомимо вам сумну новину: навіть ці помилки кодування поступово виправляються. Раніше (в 2012 році) у "Вконтакте" був популярний трюк – в статус можна було вставити керуючий символ нового рядка, і статус ділився на 2 рядки. Тепер ви не можете цього зробити-сайт обробляє виводяться дані правильно, і такий напис більше не розриває рядок:
На додаток до & nsbp, соціальні мережі та месенджери вирізали всі керуючі та спеціальні символи-ви не можете перевернути текст догори ногами або відобразити його задом наперед, якщо це спочатку не передбачено мовою. Існують такі послуги, як https://textinvert.ru / , які дозволяють змінювати текст, але вони не перевертають його з ніг на голову, а підбирають схожі літери на інших мовах. Для цього потрібен спеціальний алгоритм. Тепер надзвичайно складно створити великий порожній текст (хоча це все ще можливо), але невидимі смайлики і порожній знак набору, які порушували роботу багатьох шрифтів, також виправлені. Все, що залишається, це відправляти порожні повідомлення, подібні цим:
Unicode U + 3164 для вставки невидимого символу
Отже, найкорисніша річ-це невидимий пробіл, він же"порожній рядок". Насправді, таких символів 3, ось їх коди:
Код персонажа |
Характер |
U+115F |
ᅟ |
U+1160 |
ᅠ |
U+3164 |
ㅤ |
Щоб побачити символ, двічі клацніть по ньому в таблиці. "Word", ДО РЕЧІ, злегка виділяє символ сірим кольором.
Що стосується інших символів, то все ще є пробільні символи з адресами в області   -  , але ми протестували їх і з'ясували, що месенджери сприймають їх як звичайні прогалини – отже, вони не представляють інтересу. Якщо вони вам все одно потрібні або ви хочете протестувати їх самостійно в різних сервісах-ось ще кілька прогалин і керуючих символів:
Код персонажа |
Що це означає? |
Характер |
U+00A0 |
Простір без зазору |
|
U+2003 |
Ем простір |
|
U+2007 |
Фігурний пробіл (що б це не значило) |
|
U+2008 |
Пробіл в знаках пунктуації |
|
U+2009 |
Вузький простір |
|
U+205F |
Середній математичний простір |
|
U+3000 |
Ідеографічний простір |
|
Що стосується трьох вищенаведених символів, спочатку вони є заповнювачами для перекриваються корейських символів. Вони розглядаються як повноцінні персонажі, хоча і є наповнювачами. Можливо, така поведінка пов'язана з тим, що при використанні заповнювача ієрогліф не слід переносити на новий рядок. Якщо символ вважається пробілом, може відбутися перенесення (це залежить від інших керуючих символів). У будь-якому випадку, ви можете скопіювати порожній символ з таблиці і вставити його туди, куди вам потрібно. Але куди його можна вставити - давайте подивимося нижче.
Невидимий текст у WhatsApp, VK, Instagram, Discord та іграх
Як ми вже говорили, всі основні платформи подбали про те, щоб під час обробки вирізалися контрольні, спеціальні та інші "нестандартні" символи. Тому сфера застосування таких символів вкрай обмежена, хоча в деяких місцях їх все ж можна використовувати.
WhatsApp, Viber, Telegram:
Якщо ви вставите звичайний пробіл, то WhatsApp, як і інші месенджери, не дозволить вам відправити це повідомлення – кнопка "Відправити" не з'являється. Можна відправити U + 3164. В результаті виходить порожнє повідомлення.
ВКОНТАКТЕ, Facebook Messenger:
Тут та ж ситуація, що і з мессенджерами – ви можете відправляти порожні повідомлення в особисті повідомлення. До речі, Ви також можете вказати U+3164 в статусі ВКонтакте – він буде відображатися у вигляді порожнього рядка. Якщо ви поставите звичайний пробіл, статус буде видалений і буде видно напис"встановити статус".
TikTok, Instagram: Немає можливості використовувати прихований простір. Обидві платформи розглядають символ прихованого пробілу як звичайний пробіл.
Розбіжність:
Discord дозволяє відправляти порожні повідомлення. У той же час, якщо ви спробуєте створити канал з порожнім ім'ям, Discord не дозволить вам цього зробити:
часті питання
Якщо я введу невидимий символ у Skype, чи буде статус "офлайн"?
Ні, ви можете написати будь-який текст у рядку стану облікового запису (включаючи прихований пробіл), статус "онлайн" або "оффлайн" не зміниться.
Які проблеми з нульовим символом у програмуванні?
Ви не повинні використовувати їх у своєму коді, якщо ви не хочете його зіпсувати. Якщо вам потрібно використовувати символ для зберігання або виведення, запишіть його в змінну або в висновок за допомогою коду Unicode. Чому його краще не використовувати? Ось вам приклад:
Як ви можете бачити, ми оголосили змінну, в імені якої є прогалини, що заборонено Python. У той же час PyCharm попереджає, що з цією змінною щось не так:
Ви не тільки порушуєте правила мови, але і вставляєте палиці в колеса: щоб отримати доступ до змінної, вам потрібно буде вручну скопіювати і вставити її ім'я. Якщо ви робите якийсь проект для себе і хочете ускладнити собі життя, ви можете використовувати такі простори, але якщо ви працюєте над якимось серйозним проектом, навіть не намагайтеся цього робити, інакше у вас будуть проблеми.
Чи може спеціальний символ порушити макет?
Теоретично це можливо за умови, що макет виконаний криво або успадковує погані шаблони. Краще не використовувати такі символи в макеті, якщо ви цього не хочете, якщо ви не хочете, щоб все одного разу зламалося.
Чи можна використовувати ці Символи для злому?
Технічно, один з керуючих символів - '\ 0' - може бути використаний для злому системи за допомогою програми, написаної на C. нульовий Термінатор вказує програмі, що рядок закінчилася, і шкідливий код може бути записаний після Термінатора. Але це дуже складно, тому що по-перше, потрібно знайти програму, яка неправильно обробляє вхідні рядки, а потім ще й дозволяє запускати шкідливий код з чужої пам'яті. Близько 15 років тому це був популярний спосіб злому, зараз він більше схожий на музейний експонат злому.
часті питання
Якщо я введу невидимий символ у Skype, чи буде статус "офлайн"?
Ні, ви можете написати будь-який текст у рядку стану облікового запису (включаючи прихований пробіл), статус "онлайн" або "оффлайн" не зміниться.
Які проблеми з нульовим символом у програмуванні?
Ви не повинні використовувати їх у своєму коді, якщо ви не хочете його зіпсувати. Якщо вам потрібно використовувати символ для зберігання або виведення, запишіть його в змінну або в висновок за допомогою коду Unicode. Чому його краще не використовувати? Ось вам приклад:
Як ви можете бачити, ми оголосили змінну, в імені якої є прогалини, що заборонено Python. У той же час PyCharm попереджає, що з цією змінною щось не так:
Ви не тільки порушуєте правила мови, але і вставляєте палиці в колеса: щоб отримати доступ до змінної, вам потрібно буде вручну скопіювати і вставити її ім'я. Якщо ви робите якийсь проект для себе і хочете ускладнити собі життя, ви можете використовувати такі простори, але якщо ви працюєте над якимось серйозним проектом, навіть не намагайтеся цього робити, інакше у вас будуть проблеми.
Чи може спеціальний символ порушити макет?
Теоретично це можливо за умови, що макет виконаний криво або успадковує погані шаблони. Краще не використовувати такі символи в макеті, якщо ви цього не хочете, якщо ви не хочете, щоб все одного разу зламалося.
Чи можна використовувати ці Символи для злому?
Технічно, один з керуючих символів - '\ 0' - може бути використаний для злому системи за допомогою програми, написаної на C. нульовий Термінатор вказує програмі, що рядок закінчилася, і шкідливий код може бути записаний після Термінатора. Але це дуже складно, тому що по-перше, потрібно знайти програму, яка неправильно обробляє вхідні рядки, а потім ще й дозволяє запускати шкідливий код з чужої пам'яті. Близько 15 років тому це був популярний спосіб злому, зараз він більше схожий на музейний експонат злому.