在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"}