mysql存储特殊字符

请问各位大神,数据库怎么保存微信昵称特殊字符

阅读 6.1k
7 个回答

据说可以用utf8mb4, 可以试试

将数据库的字符集设置为utf8mb4,然后在执行添加和查询操作前执行
set names utf8mb4

如果改数据库不可行,可以转码保存,取出来再解码

CREATE TABLE `member_data` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `member_id` int(11) NOT NULL COMMENT '用户编码',
  `sex` enum('0','1','2') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '性别 0=>女生 1=>男生 2=>未知',
  `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名/昵称',
  `img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户头像',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `member_data_member_id_unique` (`member_id`)
) ENGINE=InnoDB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

看下面
ENGINE=InnoDB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
看下面
COLLATE=utf8mb4_unicode_ci

设置utf8mb4_unicode_ci 可以直接存储特殊字符

数据库字符集utf8mb4
表字符集utf8mb4,字段需要确认,如果你的表以前不是utf8mb4,而是中途改过来的,那么以前的字段编码还是以前的,需要手动调整字段编码
程序字符集设置utf8mb4

觉得设置程序字符集 collate=utf8mb4_unicode_ci不可以的话,就直接 base64_encode()存进去,然后在 base64_decode()解析就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题