我必须插入可能包含''字符的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语句中获取正确的值?
非常感谢。
答案 0 :(得分:6)
您还需要将连接编码设置为utf8mb4
。这取决于你如何连接MySQL如何做到这一点。 SET NAMES utf8mb4
是与API无关的SQL查询。
MySQL调用utf8
是实际UTF-8的一个愚蠢的子集,仅覆盖BMP(字符0000
到FFFF
)。 utf8mb4
是实际 UTF-8,它可以编码所有Unicode代码点。如果您的连接编码是utf8
,那么所有数据都会通过UTF-8的子集进行挤压,并且您无法在BMP之上向MySQL发送或接收来自MySQL的字符。