MySQL utf8mb4 Charset: Full Unicode and Emoji Support Setup

MySQL / MariaDB · 19.04.2026
MySQL utf8mb4 Charset: Full Unicode and Emoji Support Setup

Why MySQL utf8 Doesn't Support Emoji

MySQL's utf8 charset is 3-byte only, which cannot store emoji (4 bytes). utf8mb4 is proper 4-byte UTF-8 with full Unicode and emoji support.

Configure my.cnf for utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

Convert Existing Database

ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Collation Options

CollationDescriptionUse When
utf8mb4_unicode_ciAccurate Unicode comparison (CI)Most websites (recommended)
utf8mb4_binByte-by-byte, case-sensitivePasswords, hashes
utf8mb4_0900_ai_ciMySQL 8.0 Unicode 9.0 standardMySQL 8.0+ projects

PHP PDO Configuration

$pdo = new PDO(
    'mysql:host=localhost;dbname=mydb;charset=utf8mb4',
    'user', 'password',
    [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4']
);
When upgrading from utf8 to utf8mb4, verify VARCHAR index columns do not exceed 191 characters (767 bytes limit with standard InnoDB settings).
← Back to Knowledge Base Ask Support