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了:

所以,绝大部分的乱码,本质上都是编码和解码方式不同造成的。

浙公网安备 33010602011771号