在utf-8 json上逃脱重音字符

下面的代码生成此输出:

{"x": "Art. 120 - Incapacità di intendere o di volere"} 

我需要改变这个,我想我要改变编码的东西,但我不知道:

 {"x": "Art. 120 - Incapacit\u00e0 di intendere o di volere"} 

码:

 string label = "Art. 120 - Incapacità di intendere o di volere"; JObject j = new JObject(); j.Add(new JProperty("x", label)); string s = j.ToString(); Encoding encoding = new UTF8Encoding(false); string filename = @"c:\temp\test.json"; using (FileStream oFileStream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write)) { using (StreamWriter oStreamWriter = new StreamWriter(oFileStream, encoding)) { oStreamWriter.Write(j.ToString()); oStreamWriter.Flush(); oStreamWriter.Close(); } oFileStream.Close(); } 

像其他人说的那样,你想使用StringEscapeHandling.EscapeNonAscii

 using System; using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Linq; public class Program { public static void Main() { string label = "Art. 120 - Incapacità di intendere o di volere"; JObject j = new JObject(); j.Add(new JProperty("x", label)); string s = j.ToString(); var sr = new StringWriter(); var jsonWriter = new JsonTextWriter(sr) { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii }; new JsonSerializer().Serialize(jsonWriter, j); Console.Out.WriteLine(sr.ToString()); } } 

输出

 {"x":"Art. 120 - Incapacit\u00e0 di intendere o di volere"} 

https://dotnetfiddle.net/s5VppR