MySQL中的Unicode字符表情符号,带有4个字节

时间:2013-10-07 11:49:16

标签: mysql unicode emoticons

我必须插入可能包含''字符的Mysql字符串。我试过这个:

ALTER TABLE `table_name`
DEFAULT CHARACTER SET utf8mb4,
MODIFY `colname` VARCHAR(200)
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;

当我插入'';

INSERT INTO `table_name` (`col_name`) VALUES ('');

我得到以下

SELECT * FROM `table_name`;
  

????

如何在select语句中获取正确的值?

非常感谢。

1 个答案:

答案 0 :(得分:6)

您还需要将连接编码设置为utf8mb4。这取决于你如何连接MySQL如何做到这一点。 SET NAMES utf8mb4是与API无关的SQL查询。

MySQL调用utf8是实际UTF-8的一个愚蠢的子集,仅覆盖BMP(字符0000FFFF)。 utf8mb4实际 UTF-8,它可以编码所有Unicode代码点。如果您的连接编码是utf8,那么所有数据都会通过UTF-8的子集进行挤压,并且您无法在BMP之上向MySQL发送或接收来自MySQL的字符。