TGViewer
Гепардово гнездо Гепардово гнездо @gepardchan · 617 subscribers
Post #81 741
Снова забавный Юникод: ответы

Пора посмотреть, что за строки x и y были в https://t.me/gepardchan/78.

Воспользуемся буквами турецкого алфавита.

1)
>>> x = 'i'
>>> y = 'ı'

Легко видеть, что вызов .upper() приводит оба символа к 'I', после чего они неожиданным образом оказываются равны.

2)
>>> x = 'İ'
>>> y = 'I'

Здесь все чуть интереснее. .lower() на 'I' ожидаемо приводит к 'i', а вот применение .lower() на 'İ' почему-то дает два символа: сначала 'i', а затем '‌ ' (т.е. точку как диакритический знак). Получается 'i‌', что неотличимо от обычного 'i', но по факту у нас две точки, слившиеся в одну.

А вообще, алгоритмы Юникода здесь не очень совместимы с турецким языком, потому что для ı заглавная — это I, а для i заглавная — İ. А применение обычных .lower() и .upper() приводит к другим результатам
Telegram Гепардово гнездо Снова забавный Юникод 1) Пусть в Python верно одновременно >>> assert x != y >>> assert len(x) == 1 and len(y) == 1 >>> assert x.upper().lower() == y.upper().lower() >>> assert x.lower().upper() == y.lower().upper() >>> assert x.upper().lower() == x >>>…
  • 🤯 3
  • 🔥 2
More from @gepardchan
  1. Sep 7, 2025Итак, расскажу о том, что я сделал еще давно, но про что все никак не доходили руки написа…
  2. Dec 10, 2024https://habr.com/ru/post/472970/ Статья 2019 года, то есть довольно старая, с учетом того,…
  3. Nov 30, 2024Сегодня читал про то, как Debian везде перешел на 64-х битный time_t. Изменение войдет в р…
  4. Nov 26, 2024https://www.ryanliptak.com/blog/every-rc-exe-bug-quirk-probably/ Не знаю, как вы, а я прос…
  5. Nov 22, 2024Еще про проклятые фичи баша https://yossarian.net/til/post/some-surprising-code-execution-…
  6. Nov 21, 2024Про переписывание истории В баше (а точнее, в GNU Readline, который используется башом), е…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →