Zestaw znaków
Określa, jakie znaki może przechowywać kolumna i jak są kodowane jako bajty. Ustawiany na poziomie bazy, tabeli lub kolumny — i zaskakująco często błędnie, czego skutkiem są znaki zamieniające się w znaki zapytania.
Osławiony jest przypadek MySQL, gdzie zestaw o nazwie utf8 nigdy nie był prawdziwym UTF-8: obsługuje maksymalnie trzy bajty na znak, co wystarcza dla języków europejskich, ale nie dla emoji, niektórych znaków chińskich czy symboli matematycznych. Właściwy to utf8mb4, domyślny dopiero od MySQL 8. Czterobajtowy znak w kolumnie utf8 albo kończy się błędem, albo po cichu obcina tekst. Co więcej, połączenie też ma zestaw znaków — jeśli nie pasuje do kolumny, bajty są interpretowane błędnie i powstają krzaczki. PostgreSQL oszczędza sporo kłopotów, ustawiając kodowanie na poziomie bazy, w praktyce zawsze UTF-8.