给客户做小程序 依照客户要求 mysql要能存入用户昵称里的emoji表情 然后之前做这个功能的时候也调成功过 但是没记录 后来就给忘了...而且这次客户用的是腾讯云的服务器 还是不能偷懒做个记录 不然到时候又百度谷歌各种翻...心累
其实和百度上各位大神分享的方法基本上是一致的90
1.腾讯云的my.cnf文件在/etc里 直接在etc文件夹里找就能找到 (不知道其他类型的服务器是怎样 这里只针对腾讯云服务器 如果没找到的话 可以在命令行里代码 whereis my.cnf 查查看文件路径 )down下来 然后添加下面的代码
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
(在覆盖服务器上的源文件之前把原来服务器上的my.cnf备份一份 以防万一哈~)
2.进入自己腾讯云的控制台->自己的mysql->管理->点击进红圈里的 参数设置
然后把“character_set_server”这一项 点左上角的 修改当前项 修改成 "UTF8MB4" 然后腾讯云会提示正在修改...然后会自行重启MYSQL 稍等就O了~
3.接下来用数据库工具 连接自己的数据库 我用的是这个 这个不强求的 可以按自己有的软件来~
在工具里运行代码
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
可以查看服务器字符集设置 如果刚才的修改成功的话 应该显示下面这样
4.接着再运行 alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名)
然后就OK啦~
来个数据库里存入成功的截图
5.增加一些 我这边腾讯云用的nodejs 在输出用户信息的时候 用了Buffer类处理了用户昵称 后期具体测试一下必要性 目前使用是正常的 也发出来 如果测出错误再做修改