惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - sonicit

再写Javascript闭包 后台数据缓存的一点心得 Vue 数据双向绑定的误区 关于JS Pormise的认识 关于jqGrid中GridUnload方法的困惑 Javascript异步编程的4种方法 SQLServer 获得所有表结构(包括表名及字段) ACE代码编辑器,代码提示,添加自定义数据 利用闭包向post回调函数传参数 在seajs中使用require加载静态文件的问题 jqGrid标题行与第一行之间有很大空白的问题解决。 关于bootstrapValidator提交问题的解决 心得(一) 使用心得(一) MSSQL获得表的字段名称及其参数 Controller_Abstract的改造 QeePHP View视图的默认变量与新增变量 Delphi 的内存操作函数(5): 复制内存 Windows 7 安装VS2008 SP1 失败
C# 使用 Newtonsoft.Json 对DataTable转换中文乱码问题的解决
sonicit · 2021-11-26 · via 博客园 - sonicit

      今天在做项目时,发现在特定的中文条件下,会出现乱码,使前台转换成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         }