日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Dapper操作MySQL数据库获取JSON数据中文乱码

發布時間:2023/12/4 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dapper操作MySQL数据库获取JSON数据中文乱码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目中利用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,所以理論上應該和編碼沒有任何關系。

總結

以上是生活随笔為你收集整理的Dapper操作MySQL数据库获取JSON数据中文乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。