项目的解决方案中引用的有mysqlsugar的数据库操作库,在使用插入数据过程中一些特殊的生僻字或表情符号总会提示:

Incorrect string value: '\xF0\x9F...' for column 'name' at row 1

这是由于UTF-8编码有可能是两个、三个、四个字节。Emoji表情或者某些特殊字符是4个字节,而MySQL的utf8编码最多3个字节,所以数据插不进去。

进而提示\x十六进制的字符串信息。

因为myselsugar ,也是对sqlsugar的进一步封装。所以将目光聚焦在sqlsugar上就可以了。

sqlsugar给的解决方案是:

在定义实体时将临时保存特殊字符的变量mapping(映射)sqlsugar中的[SqlSugar.SugarColumn(IsTranscoding =true)] //设置该自段转码 属性

例:

 1 using System;
 2 using System.Linq;
 3 using SqlSugar;
 4 
 5 namespace ClearMonitor.Model.Entities
 6 {
 7     [SqlSugar.SugarTable("departmentintro")]
 8     public  class DepartmentintroData
 9     {
10         public int DepartmentId { get; set; }
11         public string DepartmentNo { get; set; }
12         public string DepartmentName { get; set; }
13         /// <summary>
14         /// 部门简介
15         /// </summary>
16         [SqlSugar.SugarColumn(IsTranscoding =true)]
17         public string DepartmentBlurb { get; set; }
18 
19     }
20 }
View Code

相关文章: