PostgreSQL поддерживает различные формы нормализации Unicode с помощью функции normalize()
. 3 Она преобразует заданную строку в указанную форму нормализации и возвращает результат. 3
Стандарт Unicode определяет четыре формы нормализации: NFC, NFD, NFKC или NFKD. 3 По умолчанию используется форма NFC. 3
Некоторые особенности работы с формами нормализации в PostgreSQL:
- Сравнение строк. 1 По умолчанию PostgreSQL сравнивает строки по байтам, не учитывая, что одна и та же строка может быть представлена по-разному. 1 Для работы с кодировками, которые могут быть представлены по-разному, в PostgreSQL 12 ввели недетерминированные коллации. 1 Они не только сравнивают байты, но и проводят необходимую предварительную обработку. 1
- Конкатенация. 1 Объединение двух нормализованных строк не всегда приводит к нормализованной строке. 1
- Альтернативные формы символов. 1 Unicode содержит альтернативные формы букв и других символов для различных целей совместимости. 1 Для работы с такими формами в Unicode есть дополнительные формы нормализации: NFKC и NFKD. 1 Они преобразуют альтернативные формы в канонические базовые буквы. 1