报错信息:
“Incorrect string value: '\xF0\x9F\x8E\x89\xE4\xB8...' for column 'teacherIntro' at row 1
环境描述:
在使用SqlSugar做mysql 数据插入时发现插入emoji表情的字符串时会报错:
提示插入字符串,错误提示,类似:Incorrect string value: '\xF0\x9F...' for column 'teacherIntro' at row 1。这样的错误。
原因:
-
字符编码不匹配:最常见的原因是数据库表的列使用的字符编码不支持你尝试插入的字符。
例如,如果你的列使用了
latin1或utf8编码,而你尝试插入一个utf8mb4编码的字符(如Emoji),这将导致错误。 -
列定义问题:如果列的定义中没有正确设置为可以存储Unicode字符(特别是Emoji),也会导致这种错误。
解决办法:
1、设置数据表和字段的字符集
确保你的数据库表和列使用的是支持Unicode的字符集,如utf8mb4。
设置数据库相关表的字段为:utf8mb4, 我的是mysql的数据,其他数据库类似。
只要字符集是:utf8mb4,排序规则:utf8mb4_general_ci或者utf8mb4_unicode_ci都可以
参考语句:
ALTER TABLE f_teacher CHANGE teacherIntro text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; //或者 ALTER TABLE f_teacher CHANGE teacherIntro text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2、设置数据库链接时的字符集
最重要设置,添加链接字符集:Charset=utf8mb4
参考方式如下,哪种方式都可以
var db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = "server=服务器地址;database=数据库名称;user=用户名;password=密码;Charset=utf8mb4", DbType = DbType.MySql, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute });
或者配置文件中
"ConnectionStrings": { "conn_db": "Data Source=服务器地址;User ID=用户名;Password=密码;Initial Catalog=数据库名称;Charset=utf8mb4", ... },
3、测试
添加测试数据,效果如下

浙公网安备 33010602011771号