Это одна из причин, по которой мне не нравится Unicode. Вместо того чтобы сказать «это единственный верный путь», стандарты определили несколько способов представления символов. В этом случае одна строка использует «составленную» форму, а другая - «разложенную» форму (отдельная буква и диарез).
Вы можете рассмотреть вопрос о нормализации данных:
import unicodedata
s1 = 'kommunikationsfähigkeit'
s2 = 'kommunikationsfähigkeit'
ns1 = unicodedata.normalize('NFC', s1)
ns2 = unicodedata.normalize('NFC', s2)
print(s1 == s2, ns1 == ns2)
# prints False True
Приведенный выше фрагмент нормализует строки в составную форму, что используют многие системы. Разложенная форма имеет тенденцию появляться в системах MacOS, так как она используется по умолчанию. Вы можете видеть, что строки изначально не сравниваются как равные, но они сравниваются после нормализации.