Что вы не упоминаете в своих вопросах, так это используемую кодировку. Совершенно очевидно, что это кодировка на основе Unicode.
В Юникоде кодовая точка U + 0308 (776 в десятичном виде) представляет собой комбинирующий диарез . Из буквы a
и диареза создается немецкий символ ä
.
Действительно, есть два способа представления немецких символов с помощью умлаутов (в данном случае). Либо в виде одной кодовой точки:
U+00E4 latin small letter A with diaeresis
Или как последовательность двух кодовых точек:
U+0041 latin small letter A
U+0308 combining diaeresis
В большинстве случаев Unicode работает с двумя кодовыми точками, так как для него требуется меньшее количество кодовых точек для включения символов широкого диапазона с диакритическими знаками. Однако по историческим причинам для букв с немецким умлаутом и французским акцентом существует специальный код.
Библиотеки Unicode - это большинство языков программирования, которые предоставляют функции для нормализации строки, т. Е. Либо для преобразования всех последовательностей в одну кодовую точку, если это возможно, либо для расширения всех отдельных кодовых точек в последовательность двух кодовых точек. Также см. Формы нормализации Unicode .