UTF-8是一种用于Unicode的变长字符编码,可以使用1到4个字节对Unicode进行编码。而utf8mb4则是MySQL提供的一种字符集编码,允许存储四个字节的Unicode字符。这在处理Emoji表情等特殊字符时非常有用。
不支持utf8mb4对开发者造成的困扰主要是字符存储限制。由于utf8mb4是支持存储4字节字符的,因此在不支持utf8mb4的情况下,如果大家尝试存储了一个4字节字符,MySQL会自动将它转换为��。这样就会导致一些文本在存储和查询时出现乱码。
CREATE TABLE `test_table` ( `content` varchar(200) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `test_table` (`id`, `content`) VALUES (1, 'This is a test!'), (2, '