Golang 如何使用 gorm 存取带有 emoji 表情的数据
Golang 如何使用 gorm 存取带有 emoji 表情的数据
- 结论:在 mysql 中尽量使用 utf8mb4,不要使用 utf8。
- db报错信息:`Error 1366 (HY000): Incorrect string value: '\\xE6\\x8C\\xA5\\xE7\\xAC\\xA6...'`
- 根本原因:emoji 4个字节,mysql 的 utf8 3个字节,mysql 的 utf8mb4 4个字节
- 解决方案:
- 1. 【前置条件】修改数据库的字符集配置,然后重启数据库:确保存储emoji的字段类型为 `utf8mb4`
- 2. 修改 gorm 的数据库连接串配置,改为 `charset=utf8mb4`,然后重启项目
- 其他补充:
- 关联文档:
结论:在 mysql 中尽量使用 utf8mb4,不要使用 utf8。
db报错信息:Error 1366 (HY000): Incorrect string value: '\\xE6\\x8C\\xA5\\xE7\\xAC\\xA6...'
根本原因:emoji 4个字节,mysql 的 utf8 3个字节,mysql 的 utf8mb4 4个字节
emoji 表情是4个字节,而 mysql 的 utf8 编码最多3个字节,所以数据插不进去。
而 mysql 的 utfmb4 是支持4个字节的,所以将 mysql 编码从 utf8 转换成 utf8mb4 就能解决。
解决方案:
1. 【前置条件】修改数据库的字符集配置,然后重启数据库:确保存储emoji的字段类型为 utf8mb4
根据实际需要选择运行下面的sql语句:
# 修改数据库字符集:
ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;# 修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;# 修改字段的字符集:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;#查看表字段的字符集
show full columns from table_name;
2. 修改 gorm 的数据库连接串配置,改为 charset=utf8mb4,然后重启项目
比如:
user:password@tcp(host)/dbname?charset=utf8&parseTime=True&loc=Local
修改为 charset=utf8mb4 后:
user:password@tcp(host)/dbname?charset=utf8mb4&parseTime=True&loc=Local
其他补充:
- MySQL 5.7 及之前版本默认的字符集是 latin1,MySQL 8.0 版本默认的字符集是 utf8mb4 。
- 不过使用 latin1 容易导致乱码,所以还是 utf8 和 utf8mb4 用途最广泛。
- mysql 的 utf8 其实是 utf8mb3 的别名,只使用 1~3 个字节表示字符。
- mysql 的 utf8mb4 使用 1~4 个字节表示字符,能够存储更多的 emoji 表情及任何新增的 Unicode 字符。utf8mb4 兼容 utf8 ,且比 utf8 能表示更多的字符,是 utf8 字符集的超集。
- 所以现在一些新的业务建议将数据库的字符集设置为 utf8mb4 ,特别是有表情存储需求时。
关联文档:
mysql 函数 md5 踩坑记录,报错:Error 1366 (HY000): Incorrect string value: ‘\xE6\x8C\xA5\xE7\xAC\xA6…
相关文章:
Golang 如何使用 gorm 存取带有 emoji 表情的数据
Golang 如何使用 gorm 存取带有 emoji 表情的数据 结论:在 mysql 中尽量使用 utf8mb4,不要使用 utf8。db报错信息:Error 1366 (HY000): Incorrect string value: \\xE6\\x8C\\xA5\\xE7\\xAC\\xA6...根本原因:emoji 4个字节&#x…...
计算机算法中的数字表示法——原码、反码、补码
目录 1.前言2.研究数字表示法的意义3.数字表示法3.1 无符号整数3.2 有符号数值3.3 二进制补码(Twos Complement, 2C)3.4 二进制反码(也称作 1 的补码, Ones Complement, 1C)3.5 减 1 表示法(Diminished one System, D1)3.6 原码、反码、补码总结 1.前言 昨天有粉丝让我讲解下定…...
BGP策略实验
一、实验要求 二、实验分析 1.先配置IP 2.再配置BGP 3.配置BGP策略 三、实验过程 要求 1. [r4]ip ip-prefix aa permit 192.168.10.0 24 [r4]route-policy aa permit node 10 [r4-route-policy]if-match ip-prefix aa [r4-route-policy]apply preferred-value 100 [r4]rout…...
目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解
☀️教程:霹雳吧啦Wz ☀️链接:https://www.bilibili.com/video/BV1af4y1m7iL?p1&vd_sourcec7e390079ff3e10b79e23fb333bea49d 一、R-CNN R-CNN(Region with CNN feature)是由Ross Girshick在2014年提出的,在PAS…...
【busybox记录】【shell指令】mkdir
目录 内容来源: 【GUN】【mkdir】指令介绍 【busybox】【mkdir】指令介绍 【linux】【mkdir】指令介绍 使用示例: 创建文件夹 - 默认 创建文件夹 - 创建的同时指定文件权限 创建文件夹 - 指定多级文件路径,如果路径不存在,…...
SQL刷题笔记day6-1
1从不订购的客户 分析:从不订购,就是购买订单没有记录,not in 我的代码: select c.name as Customers from Customers c where c.id not in (select o.customerId from Orders o) 2 部门工资最高的员工 分析:每个部…...
KITTI数据中pose含义
Folder ‘poses’: The folder ‘poses’ contains the ground truth poses (trajectory) for the first 11 sequences. This information can be used for training/tuning your method. Each file xx.txt contains a N x 12 table, where N is the number of frames of this …...
C++模拟实现stack和queue
1 stack 1.1概念 stl栈 1.2栈概念 1.3代码 2 queue 2.1概念 stl队列 2.2队列概念 2.3代码...
awtk踩坑记录一:awtk-web build.py编译过程笔记
工作需求,接触了awtk, 要求把界面部署到web上,期间因为各种编译问题卡的半死,提了不少issue, 经过几天补课,把项目的编译结构给摸了一遍,做个记录,也希望能帮到有同样问题的朋友。 之前python只是略接触过…...
docker容器中解决中文乱码
1. 找到dockerfile文件 2. 编辑Dockerfile 添加 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 3. 生成新的镜像文件 FROM java17_yinpeng:latest MAINTAINER YP <2064676101QQ.COM> ADD jiquan_online_chat.jar jiquan_online_chat #CM…...
Javascript 位运算符(,|,^,<<,>>,>>>)
文章目录 一、什么是位运算?二、如何使用1. 位与(AND):&用途(1)数据清零(2)判断奇偶 2. 位或(OR):|用途(1)向下取整 3…...
Golang项目代码组织架构实践
Golang在项目结构上没有强制性规范,虽然这给了开发者很大的自由度,但也需要自己沉淀一套可行的架构。本文介绍了一种项目布局,可以以此为参考设计适合自己的 Golang 项目组织模式。原文: Golang Project Layout Go 有很多强制的或是约定俗成的…...
网工内推 | 国企信息安全工程师,CISP认证优先
01 浙江省公众信息产业有限公司 🔷招聘岗位:安全运营工程师 🔷职责描述: 1. 负责公司内部安全运营平台及其子系统的安全事件管理、事件发现分析、应急响应和系统维护等; 2. 负责风险和漏洞管理,包括漏洞预…...
RAG 高级应用:基于 Nougat、HTML 转换与 GPT-4o 解析复杂 PDF 内嵌表格
一、前言 RAG(检索增强生成)应用最具挑战性的方面之一是如何处理复杂文档的内容,例如 PDF 文档中的图像和表格,因为这些内容不像传统文本那样容易解析和检索。前面我们有介绍过如何使用 LlamaIndex 提供的 LlamaParse 技术解析复…...
《TCP/IP网络编程》(第十二章)I/O复用(2)
下面是基于I/O复用的回声服务器端和客户端代码 1.Linux系统 服务器端代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> // POSIX标准定义的通用函数,如close() #include <arpa/inet.h> //…...
AI企业需要“联盟营销”?一文带你探索AI企业营销新玩法!
为什么联盟营销对AI业务有较大优势 联盟营销在电商领域、saas领域与其他产品领域同样有效。在AI业务中,它有效的原因与其他领域大不相同。 高好奇心和试用率 AI领域是创新的热点。它吸引了一群渴望探索和尝试每一项新技术的人群。这种蓬勃的好奇心为聪明的AI企业提…...
你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解
目录 一、onMounted的前世今生 1.1、onMounted是什么 1.2、onMounted在vue2中的前身 1.2.1、vue2中的onMounted 1.2.2、Vue2与Vue3的onMounted对比 1.3、vue3中onMounted的用法 1.3.1、基础用法 1.3.2、顺序执行异步操作 1.3.3、并行执行多个异步操作 1.3.4、执行一次…...
JavaWeb基础(一)-IO操作
Java I/O工作机制: 注:简要笔记,示例代码可能较少,甚至没有。 1、Java 的 I/O 类库的基本架构。 Java 的 I/O 操作类在包 java.io 下,大概有将近80个类,这些类大概可以分为如下四组。 基于字节操作的…...
拼多多(PDD)社招一面原题
未成年游戏退费 5 月 28 日,中国互联网协会发布《未成年人网络游戏服务消费管理要求(征求意见稿)》团体标准。 该标准是游戏行业首个完整的消费管理规范,可用于未成年人游戏消费退费纠纷解决,也可为相关行政部门、司法…...
类中使用QtConcurrent::run
在QtConcurrent::run中调用类的成员函数时,你需要注意几个关键点: 对象生命周期:你需要确保在QtConcurrent::run调用的整个期间,类对象都是有效的。如果对象在成员函数执行期间被销毁,将会导致未定义行为。成员函数访…...
追赶30名
1.单词2.翻译生成式人工智能是指能够生成与训练数据相似的新数据的模型。常见的生成模型包括生成对抗网络(GAN)和扩散模型。这些模型已成功应用于图像生成、文本创作和音频合成等领域。在GAN框架中,生成器与判别器相互对抗,从而不…...
WPF拖拽实战避坑指南:从DragDropEffects到QueryContinueDrag,解决拖拽后鼠标事件失效的诡异问题
WPF拖拽实战避坑指南:从DragDropEffects到QueryContinueDrag,解决拖拽后鼠标事件失效的诡异问题 当你在WPF项目中实现拖拽功能时,是否遇到过这样的场景:拖拽操作完成后,控件的MouseMove事件突然"失灵"&#…...
成本透明化:OpenClaw+GLM-4.7-Flash任务消耗实时监控
成本透明化:OpenClawGLM-4.7-Flash任务消耗实时监控 1. 为什么需要关注AI任务成本 当我把OpenClaw接入GLM-4.7-Flash模型后,最初几天的兴奋很快被账单浇了一盆冷水。作为一个习惯用自动化处理各种事务的技术爱好者,我发现自己陷入了典型的&…...
Qwen3-Reranker-0.6B部署教程:对接Weaviate向量数据库Hybrid Search集成
Qwen3-Reranker-0.6B部署教程:对接Weaviate向量数据库Hybrid Search集成 你是不是也遇到过这样的问题?用向量数据库做检索,明明搜出来一堆结果,但排在前面的总感觉不是最想要的。传统的向量相似度搜索,有时候就是差那…...
别再只盯着ONNX了!用PNNX把PyTorch模型轻松转成ncnn格式(安卓部署实战)
深度学习模型安卓部署实战:PNNX与ONNX转换工具深度对比 在移动端部署深度学习模型时,模型转换环节往往是开发者遇到的第一个技术瓶颈。许多团队习惯性地选择ONNX作为中间格式,却忽视了更高效的替代方案。本文将带您深入探索PNNX这一专为PyTor…...
终极指南:OpenAI Python SDK推理强度参数调优实战
终极指南:OpenAI Python SDK推理强度参数调优实战 【免费下载链接】openai-python The official Python library for the OpenAI API 项目地址: https://gitcode.com/GitHub_Trending/op/openai-python 掌握OpenAI Python SDK推理强度参数配置,让…...
通义千问1.5-1.8B-Chat-GPTQ-Int4 Java开发集成:SpringBoot项目实战指南
通义千问1.5-1.8B-Chat-GPTQ-Int4 Java开发集成:SpringBoot项目实战指南 最近在帮一个朋友做项目,他们想在自己的Java应用里加个智能对话功能,看中了通义千问1.5-1.8B-Chat-GPTQ-Int4这个模型。这模型挺有意思的,体积小但能力不弱…...
Python MCP服务部署成本飙升?5个被90%团队忽略的隐性开销及实时监控方案
第一章:Python MCP服务部署成本飙升的真相与警示Python MCP(Model Control Plane)服务在微服务架构中承担模型注册、版本调度、A/B测试路由等关键职责。近期大量团队反馈其云上部署成本在两周内激增300%以上,远超业务增长曲线。深…...
STM32 HAL库里Systick中断优先级设成0x0F,你的定时器还准吗?
STM32 HAL库中Systick中断优先级设置对定时精度的影响与优化实践 在嵌入式开发领域,定时精度往往直接影响着系统性能与稳定性。许多开发者在使用STM32 HAL库时,可能从未深入思考过Systick中断优先级设置对系统定时精度的影响。本文将揭示一个容易被忽视但…...
MarkItDown:文档转换工具的全方位解析与高效应用指南
MarkItDown:文档转换工具的全方位解析与高效应用指南 【免费下载链接】markitdown 将文件和办公文档转换为 Markdown 的 Python 工具 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 在数字化办公与内容创作领域,文档格式转换是连…...
