• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# 使用 Newtonsoft.Json 对DataTable转换中文乱码问题的解决

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

      今天在做项目时,发现在特定的中文条件下,会出现乱码,使前台转换成JSON对象是出错。

刚开始以为是数据库字段中,有特殊的字符导致,最后测试后发现,数据库查询的JSON字符串可以正常解析,说明问题在后台转换上。

因为后台DataTable转换使用Newtonsoft.Json ,且使用转换器进行特定数据的转换。解决方法很简单看下面的代码

 1 public class MiniDateTimeConverter : DateTimeConverterBase
 2         {
 3             public string DateTimeFormat { get; set; }
 4 
 5             private static IsoDateTimeConverter dtConverter = new IsoDateTimeConverter();
 6             public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 7             {
 8                 dtConverter.DateTimeFormat = DateTimeFormat;
 9                 return dtConverter.ReadJson(reader, objectType, existingValue, serializer);
10             }
11 
12             public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
13             {
14                 serializer.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii; // 解决中文不出现乱码的问题
15                 DateTime dateTime = (DateTime)value;
16                 if (value.GetType().FullName == "System.DBNull")// || dateTime.ToString("yyyy-MM-dd HH:mm:ss") == "1900-01-01 00:00:00")
17                 {
18                     writer.WriteValue(string.Empty);
19                 }
20                 else
21                 {
22                     dtConverter.DateTimeFormat = DateTimeFormat;
23                     dtConverter.WriteJson(writer, value, serializer);
24                 }
25             }
26 
27             public override bool CanRead
28             {
29                 get
30                 {
31                     return false;
32                 }
33             }
34             /// <summary>
35             /// 是否允许转换JSON字符串时调用
36             /// </summary>
37             public override bool CanWrite
38             {
39                 get
40                 {
41                     return true;
42                 }
43             }
44         }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#数据结构与算法揭秘三发布时间:2022-07-13
下一篇:
在C#中,委托(delegate)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap