json.net中文乱码问题
在使用newtonSoft的Json做读取json配置文件信息时,发现会出现中文乱码,出现一堆的问号:
using Newtonsoft.Json; using System; using System.IO; using System.Text; namespace CSJsonTest { class Program { static void Main(string[] args) { StreamReader sr = new StreamReader(@"E:\测试.json"); VCUPinConfig cfg= JsonConvert.DeserializeObject<VCUPinConfig>(sr.ReadToEnd()); sr.Close(); Console.WriteLine(cfg.Project); Console.WriteLine(cfg.CreatedDate); Console.WriteLine(cfg.Version); Console.WriteLine(cfg.Author); foreach (string s in cfg.LSD) { Console.WriteLine(s); } foreach (string s in cfg.HSD) { Console.WriteLine(s); } Console.Read(); } } public class VCUPinConfig { public string Project { get; set; } public DateTime CreatedDate { get; set; } public string Version { get; set; } public string Author { get; set; } //低边驱动 public string[] LSD { get; set; } //高边驱动 public string[] HSD { get; set; } } }
ASCII都正常,但是中文不正常。据说是Json采用的是UTF8,而C#使用的是Unicode。
怎么搞咧?
把这一行:
StreamReader sr = new StreamReader(@"E:\测试.json");
修改为:
StreamReader sr = new StreamReader(@"E:\测试.json",Encoding.Default);
测试就OK了:
所以,绝大部分的乱码,本质上都是编码和解码方式不同造成的。