方案一:升级到MySQL5.5+版本,支持utf8mb4编码格式,然后执行下面的变更语句: ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 这样可以完整保存用户昵称,但系统升级风险较大,需要多方面测试。 方案二:另外一个方法更容易,就是去除非3字节的特殊符号, $nickname = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $nickname) 我是用方案二解决的