使用golang的mysql无法插入emoji表情

场景:使用golang 调用mysql储存emoji表情报错
环境:golang:go1.13.3 orm:GORM mysql客户端:Navicat

  • 开始的时候,客户端需要发送emoji表情,返回
    Incorrect string value: ‘\xF0\x9F\x98\x88 \xF0…’ for column ‘text’ at row 1
    看到这个信息的时候,第一反应肯定是mysql无法本身是无法支持emoji编码的,需要修改一下mysql的配置文件.

  • 然后开始百度这个消息,出现一大堆的回答,都是让我去修改mysql的ini.my文件中编码, 因为mysql原来的编码是utf8,这个文字编码为3个字节,但是emoji为 utf8mb4 是4个字节最后按照教程将mysql的配置文件修改了并且重启成功.
    发现发送emoji表情仍然还是报那个错,一开始我以为是自己配置不对,于是拼命地去找mysql配置,结果都是一样的.

  • 既然这样,我就将golang那边打印出来的insert语句拿下来直接到navicat中直接插入,结果神奇的成功了.这时候我以为应该好了,一切准备就绪后,发送普通消息–成功,激动地发送emoji–报错. 崩溃了;啥原因找不到,找了一个下午无疾而终.

  • 第二天不甘心继续找,各种单元测试,还是不行,最后还想了在golang中进行emoji编解码,但是编解码在本地测试的时候一切正常,但是经过网络通信后发现得到的字符不对,也懒得去解决了,还是想想这个如何将emoji入库的事情吧.

  • 又开始疯狂地百度,终于找到了一篇,有golang然后又有mysql和emoji的字眼,结果只是有一位仁兄碰到了跟我一样的难题:将mysql编码调整过后,手动在mysql中插入emoji正常,但是通过golang调用就报字节编码错误; 遗憾的是没人回答.最后怎么找都是这么一个含有golang 插入mysql emoji的文章;无奈想到了stackoverflow,去搜一下试试,golang insert emoji,还发现无结果.我要哭了.

  • 最后没办法,试试google吧,百度搜一下谷歌搜索,就会出现很多google镜像网站,然后进去搜了一下golang insert emoji,第一篇就是一个包含golang,mysql,emoji字眼的文章:
    https://hackernoon.com/today-i-learned-storing-emoji-to-mysql-with-golang-204a093454b7
    进来看了看,终于找到了自己想要的东西了.

最后根据他的和自己的过程总结一下:

  1. mysql这边照样按照原始的方式,将配置文件修改编码格式
  2. 重新创建数据库,并且设置数据库编码为utf8mb4 ,排序规则为utf8mb4_unicode_ci
    (这样的话,所有的表还有string字段都是这个编码格式,如果不想所有的都是,可以单独设置,这个不是重点.因为在navicat上都好设置,手动点一下就行了)
  3. 重点来了:golang中使用的是 github.com/go-sql-driver/mysql驱动,
    将连接mysql的dsn:(因为我这使用的是gorm,所以dsn可能跟原生的格式不太一样,不过没关系,只需要关注charset和collation就行了)
    root:password@/name?parseTime=True&loc=Local&charset=utf8
    修改为:
    root:password@/name?parseTime=True&loc=Local&charset=utf8mb4&collation=utf8mb4_unicode_ci

最后就完美解决了!!!

使用golang的mysql无法插入emoji表情的问题相关推荐

  1. 解决mysql特殊字符或者Emoji表情插入报错问题

    解决mysql特殊字符或者Emoji表情插入报错问题 原因: MySQL的utf8编码最多3个字节,Emoji表情或者某些特殊字符是4个字节,所以数据插入不了,需要修改编码. 在MySQL 的&quo ...

  2. Mysql关于处理emoji表情包报错问题的处理

    mysql使用emoji表情的功能,在mysql 5.5 之前,UTF-8编码只支持1-3个字节:从MySQL 5.5开始,可以支持4个字节UTF编码 utf8mb4 ,一个字符能够支持更多的字符集, ...

  3. SqlSugar 插入emoji表情

    在使用SqlSugar做数据插入时发现插入emoji表情的字符串时会报错:提示插入字符串/F0/xxxxx什么的失败,类似:Incorrect string value: '\xF0\x9F...' ...

  4. MySQL中关于emoji表情的存储(微信登录出现登录失败【由于微信昵称字符问题】)

    MySQL中关于emoji表情的存储(微信登录出现登录失败[由于微信昵称字符问题]) 问题描述 解决方法 闲谈 问题描述 今天网站遇到用户说登录失败,查看日志发现是微信登录自动生成用户时,用户创建失败 ...

  5. 在博客中插入emoji表情

    在博客Markdown编辑器中插入emoji表情? 利用三种不同方法在博客.网页.markdown编辑器中插入emoji表情.? 在写博客时,经常希望能够用一些表情表达自己想法,但是默认的markdo ...

  6. mysql不支持emoji表情的问题的解决方法

    mysql不支持emoji表情的问题的解决方法 参考文章: (1)mysql不支持emoji表情的问题的解决方法 (2)https://www.cnblogs.com/flywang/p/851420 ...

  7. markdown中快速插入Emoji表情包语法速查表!!!

    markdown中快速插入Emoji表情包语法速查表!!!

  8. 【Mysql】存储emoji表情报错(Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F...‘)的解决方案

    [Mysql]存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案 参考文章: (1)[Mysql]存储emo ...

  9. mysql设置可以存表情_Mysql实例使MySQL能够存储emoji表情字符的设置教程

    <MysqL实例使MysqL能够存储emoji表情字符的设置教程>要点: 本文介绍了MysqL实例使MysqL能够存储emoji表情字符的设置教程,希望对您有用.如果有疑问,可以联系我们. ...

最新文章

  1. java 类之间数据传递_java类之间数据传递问题
  2. Errors running builder 'JavaScript Validator' on project
  3. 用Python建设企业认证和权限控制平台
  4. 独家:这也许是最具珍藏价值的Oracle DBA生存宝典!
  5. mysql严格模式 报错_mysql严格模式
  6. java版 高斯过程_高斯过程scikit-learn - 异常
  7. 【day31】函数总结
  8. 2.2大数据采集技术
  9. mysql数据库表示创建表的关键字的是_创建数据表时,使用( )关键字表示创建临时表。_学小易找答案...
  10. 设计模式 | 观察者模式及典型应用
  11. 中南大学计算机基础在线作业答案三,中南大学计算机基础三答案.doc
  12. MATLAB Robotics Toolbox常用函数简介
  13. PlatON和IRISnet结成战略合作伙伴,共同开拓区块链企业服务市场
  14. 公司新来了个00后测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...
  15. 如何评估 Web3 项目的价值?
  16. zbb20170630 web项目发布至tomcat的ROOT下方法(开发环境和部署环境)
  17. 蓝图(Blueprint)理解
  18. 瓢城旅行社网页界面设计(HTML+CSS)
  19. 为了让师妹20分钟学会canvas,我熬夜苦肝本文外加一个小项目【❤️建议收藏❤️】
  20. Java购物清单结算

热门文章

  1. 微弱脏污缺陷halcon实现识别
  2. 钉钉开放平台地址配置
  3. 如何在Mac电脑上取消Apple Music订阅?
  4. 2019年繁星屠龙1-8窍门_“屠龙十日”已过两年,写给邓伦和罗云熙的一些话
  5. 【ROS小车7】_ROS主控与STM32主控通信的设置方法
  6. SAP系统变量SY-
  7. linux 挂载磁盘命令
  8. matlab粗集系统评估wine,C4.5 决策树算法对UCI wine数据集分类的实现(MATLAB)
  9. 10.7 抽象类最佳实践-模板设计模式
  10. 使用阻塞式队列处理大数据