Дозвольте мені сказати, що це - хоча це здається розумним - справді, справді дурний хакер. Якщо хтось рекомендує це вам у 2019 році, ударіть його. Удар його як можна сильніше.
Ви, звичайно, можете це робити у власному програмному забезпеченні, яке ви та ніхто більше не використовуєте, якщо знаєте, що ви ніколи не будете використовувати будь-яку мову, крім англійської. В іншому випадку не йти.
Злом був аргументований "добре" десь 30-35 років тому, коли комп'ютери насправді не дуже багато займалися, окрім англійської в ASCII, і, можливо, однією або двома основними європейськими мовами. Але ... вже не так.
Зловмисник працює, тому що верхньо-нижній регістр у США та Латині знаходиться точно 0x20
один від одного і відображається в одному порядку, що становить лише один біт різниці. Що, власне, цей трохи хак, перемикає.
Тепер люди, що створювали кодові сторінки для Західної Європи, а згодом і консорціуму Unicode, були досить розумні, щоб зберегти цю схему, наприклад, німецькі умлати та голосні звуки з французьким акцентом. Не так для ß, які (поки хтось не переконав консорціум Unicode в 2017 році, і великий журнал друку Fake News про це писав, насправді переконуючи Дудена - жодного коментаря до цього) навіть не існує як версал (перетворюється на SS) . Тепер же існують як Versal, але дві 0x1DBF
позиції один від одного, а НЕ0x20
.
У реалізатори були, однак, НЕ тактовні досить , щоб тримати це відбувається. Наприклад, якщо ви застосуєте свій хакер на деяких східноєвропейських мовах тощо (я б не знав про кирилицю), ви отримаєте неприємний сюрприз. Усі ці символи "капелюшків" - це приклади цього, малі та великі регістри - один на одного. Таким чином, злом не працює належним чином.
Наприклад, є багато іншого, що слід врахувати, наприклад, деякі символи взагалі просто не перетворюються з нижнього на верхній регістр (вони замінюються різними послідовностями), або вони можуть змінювати форму (вимагаючи різних точок коду).
Навіть не думайте про те, що цей хак зробить для таких матеріалів, як тайська чи китайська (це просто дасть вам повну дурницю).
Збереження декількох сотень циклів процесора, можливо, було дуже вартим 30 років тому, але в наш час насправді немає приводу для правильного перетворення рядка. Існують бібліотечні функції для виконання цього нетривіального завдання.
Час, необхідний для належного перетворення декількох десятків кілобайт тексту, зараз незначний.
@
в `за допомогою^ 32
.