Handle Unicode text, emoji, encoding, normalization, code points, and safe storage.
Lessons
Use utf8mb4 so emoji actually store.
MySQL utf8 vs utf8mb4 is easiest to learn by reading the example, changing it, and observing the result.
-- MySQL "utf8" is only 3 bytes and CANNOT store emoji.
-- Always use utf8mb4 (real 4-byte UTF-8).
CREATE TABLE messages (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
body TEXT NOT NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
-- Connection must also use utf8mb4:
SET NAMES utf8mb4;Practice the MySQL utf8 vs utf8mb4 example in a small scratch file, then explain what changed and why.