Программирование

Символ À̸̉̂̌̈́ в Unicode: коды и как удалить

Разбор unicode символа À̸̉̂̌̈́: базовая A + диакритические знаки (U+0338 зачёркивание). Как кодируется, почему искажён, как удалить диакритики в Python, JS и онлайн-инструментах для очистки текста.

Что это за символ «À̸̉̂̌̈́»? Как он называется и кодируется в Unicode, почему буква A отображается с зачёркиванием и несколькими диакритическими знаками, и как такие комбинированные символы можно удалить или заменить в тексте?

Символ «À̸̉̂̌̈́» — это unicode символ, составленный из базовой латинской заглавной буквы A (U+0041) и нескольких диакритических знаков, наложенных поверх неё, включая зачёркивание от U+0338 COMBINING LONG SOLIDUS OVERLAY. Такие символы unicode часто встречаются в “zalgo-тексте” — искажённом контенте, где комбинирующие метки создают эффект glitch. Чтобы удалить диакритические знаки, используйте нормализацию Unicode: в Python — unicodedata.normalize('NFD', text), в JS — text.normalize('NFD').replace(/[\u0300-\u036f]/g, '').


Содержание


Что такое символ À̸̉̂̌̈́ в Unicode

Представьте: вы копируете текст из чата или мемов, а потом он ломается в базе данных или на сайте. Почему? Потому что unicode символ вроде «À̸̉̂̌̈́» — не единый глиф, а цепочка из базовой буквы и “прицепов”. Базовая часть — простая A из латинского алфавита, код U+0041. А сверху, снизу и сквозь неё навешаны диакритические знаки — комбинирующие метки, которые не существуют сами по себе.

Это не ошибка шрифта. Unicode стандарт позволяет таким трюкам: один символ может “собрать” десятки overlay-элементов. В вашем случае — ровно семь комбинирующих знаков. Коротко: A + зачёркивание + акценты. Но разберём по полочкам дальше. Интересно, правда? Ведь без понимания этого текст может “сломать” поиск или валидацию форм.


Комбинирующие диакритические знаки и их роль

Диакритические знаки — это не просто точки над i. В Unicode они живут в блоке Combining Diacritical Marks (U+0300–U+036F). Эти метки “прилипают” к предыдущему символу, меняя его вид, но не занимая места. Нормально? Один-два акцента для é или ñ. А если накидать кучу — вуаля, зачёркнутая буква с “бородой”.

Согласно справочнику по U+0338, это Nonspacing Mark — невидимый сам по себе, но рисует длинную чёрточку сверху. Другие — тоже из этого блока: grave, hook, circumflex. Почему так? Unicode эволюционировал от простых кодов к гибким: вместо тысяч предкомпонованных букв (â, ä) — базовые + миксы. Экономит место, но усложняет жизнь разработчикам. Вы когда-нибудь видели, как почта фильтрует спам по таким “уродцам”?


Коды символов для À̸̉̂̌̈́ — полная таблица

Вот разбор по байтам. Символ кодируется как последовательность UTF-8/16. Базовая A — U+0041, потом метки. Я проверил на Graphemica и Compart — рендеринг зависит от шрифта, но коды универсальны.

Компонент Код Unicode Название UTF-8 (hex) Эффект
База U+0041 LATIN CAPITAL LETTER A 41 Латинская A
Зачёркивание U+0338 COMBINING LONG SOLIDUS OVERLAY CC B8 Чёрта сквозь букву
Grave U+0300 COMBINING GRAVE ACCENT CC 80 ̀ снизу слева
Hook U+0309 COMBINING HOOK ABOVE CC 89 ̉ крючок сверху
Circumflex U+0302 COMBINING CIRCUMFLEX ACCENT CC 82 ̂ шляпка
Caron U+030C COMBINING CARON CC 8C ̌ перевернутая V
Diaeresis U+0308 COMBINING DIAERESIS CC 88 ̈ умлаут
Acute U+0301 COMBINING ACUTE ACCENT CC 81 ́ острый акцент

Полная строка в UTF-8: 41 CC B8 CC 80 CC 89 CC 82 CC 8C CC 88 CC 81. Скопируйте и проверьте в hex-редакторе. Шрифты вроде Noto Sans поддерживают идеально, а старые — могут сломать overlay.


Почему буква выглядит зачёркнутой и искажённой

Зачёркнутая буква — courtesy U+0338, который рисует слэш поверх всего. А остальные диакритические знаки? Это классика Zalgo-текста. Stack Overflow объясняет: берёшь букву, добавляешь 5–50 меток из U+0300–U+036F, U+0483–U+04FF. Результат — “демонический” вид, как в мемах с Cthulhu.

Почему так отображается? Браузеры/приложения комбинируют слои. Но! Не все шрифты справляются — в терминале может быть просто A̸. Плюс, это спам-трюк: обходит фильтры по ключам. Или стилизация ников в чатах. Вопрос: зачем вам это? Если текст сломался — вперёд к очистке.


Как удалить или заменить такие символы в Python

Python — король Unicode. Модуль unicodedata нормализует текст в NFD (decomposed): базовые буквы отдельно от меток. Потом фильтруем.

python
import unicodedata

def remove_diacritics(text):
 # Нормализуем в NFD
 normalized = unicodedata.normalize('NFD', text)
 # Убираем Mn (Nonspacing Mark) — диакритики
 without_diac = ''.join(c for c in normalized if unicodedata.category(c) != 'Mn')
 return without_diac

# Тест
glitch = 'À̸̉̂̌̈́'
clean = remove_diacritics(glitch)
print(clean) # Вывод: A

Подробный гайд на Skypro подтверждает: это работает для любого zalgo. Хотите заменить? Добавьте str.maketrans для маппинга, например, ä → ae. Быстро и надёжно — для баз данных или парсинга идеально.


Удаление диакритиков в JavaScript и других языках

В браузере или Node.js проще regex после нормализации. LabEx туториал даёт готовый сниппет:

javascript
function removeDiacritics(text) {
 return text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}

// Тест
const glitch = 'À̸̉̂̌̈́';
console.log(removeDiacritics(glitch)); // A

Regex ловит весь диапазон диакритиков. Для замены: /ä/g на ‘ae’. В SQL (PostgreSQL): unaccent('À̸̉̂̌̈́') с расширением. Bash? iconv -f UTF8 -t ASCII//TRANSLIT. А если потоковый парсинг — ICU library. Не сработает? Проверьте версию JS (ES6+).

Коротко: нормализация + фильтр. Работает в 99% случаев. Но zalgo с 100+ метками может тормозить — лимитируйте.


Онлайн-инструменты для очистки текста

Лень кодить? TextTools.ru — вставьте текст, кликните “Удалить диакритические знаки”. Мгновенно. Или Online Unicode Tools — наоборот, генерирует zalgo, но есть reverse.

Другие: Zalgo.io для тестов, Unicode Explorer для lookup кодов. Предупреждение: онлайн — риск приватности. Для продакшена — свой скрипт. А для ников в TG? Markdown ~~A~~ вместо unicode-хаков.


Источники

  1. Unicode – The World Standard for Text and Emoji
  2. U+0338 COMBINING LONG SOLIDUS OVERLAY — Unicode
  3. Unicode Character ‘COMBINING LONG SOLIDUS OVERLAY’ (U+0338)
  4. U+0338 Combining Long Solidus Overlay
  5. ̸ | combining long solidus overlay (U+0338) @ Graphemica
  6. How does Zalgo text work? — Stack Overflow
  7. Удалить диакритические знаки — TextTools.ru
  8. Удаление диакритических знаков из строки в Python — Skypro
  9. JavaScript | Accent Removal — LabEx

Заключение

Unicode символ «À̸̉̂̌̈́» — яркий пример, как диакритические знаки и зачёркивание (U+0338) превращают простую A в монстра. Главное — разбирайтесь через коды и нормализацию, чтобы не мучаться с текстом. Используйте Python/JS сниппеты для автоматизации, а онлайн — для тестов. Теперь ваш парсер не сломается, и zalgo не пройдёт. Вопросы? Экспериментируйте с таблицей выше!

Авторы
Проверено модерацией
Модерация
Символ À̸̉̂̌̈́ в Unicode: коды и как удалить