石油化工建设网站,wordpress quizzin,桂林临桂新区房价暴涨,网络媒体设计与制作在项目中利用Dapper将JSON数据存储到MySQL数据库#xff0c;结果发现JSON数据中的中文乱码#xff0c;特此记录#xff0c;希望对存储JSON的童鞋能有所帮助#xff0c;文中若有错误之处#xff0c;还望批评指正。为了引出最终问题出在什么地方#xff0c;我们重头开始进行… 在项目中利用Dapper将JSON数据存储到MySQL数据库结果发现JSON数据中的中文乱码特此记录希望对存储JSON的童鞋能有所帮助文中若有错误之处还望批评指正。为了引出最终问题出在什么地方我们重头开始进行讲解首先我们给出如下测试实体以及在数据库中的表如下为了数据操作方便我们通过包【Dapper.SimpleCRUD】来操作插入数据和查询数据如下如上一切正常接下来我们将存储JSON数据的列类型修改为json然后再来进行如上操作结果会发现获取数据中文将乱码刚开始我猜想难道用的包【Dapper.SimpleCRUD】在映射时出了问题于是我用Dapper进行如下查询依然会出现如上中文乱码 所以由上基本可以得出结论针对MySQL中的类型json若json数据中存在中文则利用Dapper查询时将出现乱码。那么如何解决这个问题呢于是乎在添加数据时我将中文进行URL编码再查询时进行解码即可如下当然上述解决方案以实际项目业务而去解决我们项目需要获取到JSON数据中的中文然后通过URL传输免去请求接口再去获取所存储的名称。到此我们了解了Dapper针对json数据类型将导致查询中文乱码的问题但是其根本原因是什么呢上述连接MySQL的驱动是使用Oracle官方所提供的驱动且为最新版本如下我们知道通过EF Core操作MySQL数据库若是利用官方包有一堆问题存在所以大多都是采用的包【Pomelo.EntityFrameworkCore.MySql】因为里面包含【MySqlConnector】换句话说也就存在MySQL的驱动连接所以这里我们尝试利用该包替换上述【MySql.Data】包结果发现中文不再乱码。综上所述我们需要注意的是若利用官方驱动包【MySql.Data】当配置MySQL中的列类型为json时若json数据中存在中文则利用Dapper查询时将会出现中文乱码需要进行转换。上述在数据库连接字符串中我们设置为utf8mb4所以理论上应该和编码没有任何关系。