Кодировка (character set)
Какие символы может хранить столбец и как они кодируются в байты. Задаётся для базы, таблицы или столбца — и удивительно часто неверно, из-за чего символы превращаются в вопросительные знаки.
Печально известный случай — MySQL, где кодировка под названием utf8 никогда не была настоящей UTF-8: она вмещает не более трёх байт на символ. Для европейских языков хватает, для эмодзи, некоторых китайских иероглифов и математических символов — нет. Правильная кодировка — utf8mb4, по умолчанию только с MySQL 8. Четырёхбайтовый символ в столбце utf8 либо вызывает ошибку, либо молча обрезает текст. Кроме того, кодировка есть и у соединения: если она не совпадает с кодировкой столбца, байты трактуются неверно и получаются кракозябры. PostgreSQL избавляет от многих бед, задавая кодировку на уровне базы — на практике всегда UTF-8.